2015-12-03 49 views
1

我有一个带有选项卡活动和三个选项卡的Android应用程序。 这将创建在我的Overview.class 在我的OverviewPageAdapter.class我得到每个标签内容的正确的类和布局。在应用程序启动后选择默认选项卡

我有一个设置活动,用户可以在其中选择一个默认选项卡,例如 - > tab2 这我将保存到sharedpref。 现在我想知道,该标签2将显示为开始标签。 我怎样才能做到这一点?每次看到“概览活动”时,每次都会显示选项卡2?

Overview.class

public class Overview extends AppCompatActivity { 


    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     setContentView(R.layout.overview); 
     Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
     setSupportActionBar(toolbar); 





     TabLayout tabLayout = (TabLayout) findViewById(R.id.tab_layout); 

     tabLayout.addTab(tabLayout.newTab().setText(getString(R.string.Tab1))); 
     tabLayout.addTab(tabLayout.newTab().setText(getString(R.string.Tab2))); 
     tabLayout.addTab(tabLayout.newTab().setText(getString(R.string.Tab3))); 

     tabLayout.setTabGravity(TabLayout.GRAVITY_FILL); 

     final ViewPager viewPager = (ViewPager) findViewById(R.id.page_adapter); 
     final OverviewPageAdapter adapter = new OverviewPageAdapter (getSupportFragmentManager(), tabLayout.getTabCount()); 
     viewPager.setAdapter(adapter); 

/*** SET TAB 2 as START TAB ****/ 
viewPager.setCurrentItem(2); 
/********/ 


     viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout)); 
     tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() { 


      @Override 
      public void onTabSelected(TabLayout.Tab tab) { 
       viewPager.setCurrentItem(tab.getPosition()); 
      } 

      @Override 
      public void onTabUnselected(TabLayout.Tab tab) { 
      } 

      @Override 
      public void onTabReselected(TabLayout.Tab tab) { 
      } 


     }); 
    } 
} 

OverviewPageAdapter.class

public class OverviewPageAdapter extends FragmentStatePagerAdapter { 
int mNumOfTabs; 

public OverviewPageAdapter(FragmentManager fm, int NumOfTabs) { 
    super(fm); 
    this.mNumOfTabs = NumOfTabs; 
} 

@Override 
public Fragment getItem(int position) { 

    switch (position) { 
     case 0: 
      OverviewTab1 tab1 = new OverviewTab1(); 
      return tab1; 
     case 1: 
      OverviewTab2 tab2 = new OverviewTab(); 
      return tab2; 
     case 2: 
      OverviewTab3 tab3 = new OverviewTab3(); 
      return tab3; 
     default: 
      return null; 
    } 
} 

@Override 
public int getCount() { 
    return mNumOfTabs; 
} 
} 

OverviewTab1.class

public class OverviewTab1 extends Fragment { 

private View FragementView; 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    FragementView = inflater.inflate(R.layout.overview_tab1, container, false); 
    return FragementView; 
} 
} 

OverviewTab2.class

public class OverviewTab2 extends Fragment { 

private View FragementView; 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    FragementView = inflater.inflate(R.layout.overview_tab2, container, false); 
    return FragementView; 
} 
} 

OverviewTab3.class

public class OverviewTab3 extends Fragment { 

private View FragementView; 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    FragementView = inflater.inflate(R.layout.overview_tab3, container, false); 
    return FragementView; 
} 
} 

overview_tab1.xml

<RelativeLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent"> 


<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="TAB1" 
    android:id="tvNoData" 
    android:layout_centerVertical="true" 
    android:layout_centerHorizontal="true" 
    android:alpha="1" 
    android:textSize="18sp" 
    android:textStyle="bold" 
    android:allowUndo="false" /> 

overview_tab2.xml

<RelativeLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent"> 


<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="TAB2" 
    android:id="tvNoData" 
    android:layout_centerVertical="true" 
    android:layout_centerHorizontal="true" 
    android:alpha="1" 
    android:textSize="18sp" 
    android:textStyle="bold" 
    android:allowUndo="false" /> 

overview_tab3.xml

<RelativeLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent"> 


<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="TAB3" 
    android:id="tvNoData" 
    android:layout_centerVertical="true" 
    android:layout_centerHorizontal="true" 
    android:alpha="1" 
    android:textSize="18sp" 
    android:textStyle="bold" 
    android:allowUndo="false" /> 

overview.xml

<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/drawer_layout" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:fitsSystemWindows="true" 
    tools:openDrawer="start"> 


    <android.support.design.widget.CoordinatorLayout 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     xmlns:app="http://schemas.android.com/apk/res-auto" 
     xmlns:tools="http://schemas.android.com/tools" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:fitsSystemWindows="true"> 

     <android.support.design.widget.AppBarLayout 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content"> 

      <android.support.v7.widget.Toolbar 
       android:id="toolbar" 
       android:layout_width="match_parent" 
       android:layout_height="?attr/actionBarSize" 
       android:background="?attr/colorPrimary" /> 

      <android.support.design.widget.TabLayout 
       android:id="tab_layout" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" /> 

     </android.support.design.widget.AppBarLayout> 



     <android.support.v4.view.ViewPager 
      android:id="@+id/page_adapter" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent"/> 


    </android.support.design.widget.CoordinatorLayout> 

</RelativeLayout> 

回答

1

您可以检查getTabAt // Set INDEX

TabLayout tabLayout = (TabLayout) findViewById(R.id.tab_layout); 
    TabLayout.Tab tab = tabLayout.getTabAt(0); // Count Starts From 0 
    tab.select(); 

编辑

viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { 
    @Override 
    public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { 

    } 

    @Override 
    public void onPageSelected(int position) { 
     if(position == 2){ // if you want the third page, for example 
      //Your code here 
     } 
    } 

    @Override 
    public void onPageScrollStateChanged(int state) { 

    } 
}); 
+1

我把你的代码在我的overview.class线下 “viewPager.setAdapter(适配器);”并设置... getTabAt(2),但选项卡0将被选中:/ – Ghost108

+0

好吧,对于测试的情况下,设置'viewPager.setCurrentItem(2);' –

+1

这个工程,但现在我看到下一个问题。 我在开始时检查哪个选项卡被选为默认设置,如下所示: if(prefs.getString(“Tab”,“”)==“tab3”){viewPager.setCurrentItem(2); } 现在我开始我的应用程序,选项卡3被选中,但是当我触摸选项卡1时,选项卡3的内容也会显示。如果我再次触摸选项卡3和thang再次选项卡1,比我得到标签1的内容 – Ghost108

相关问题