Android TabLayout(API 22)在没有ViewPager的情况下为每个选项卡添加片段

use*_*088 4 android android-fragments

我正在尝试Android的新TabLayout类,在我的ActionBar下面添加两个标签.每个选项卡将托管不同的片段.

此外,我不希望能够在我的两个标签之间滑动 - 在我的标签之间导航,我希望能够只触摸我想要导航到的标签.

在我的MainActivity中,我有:

public class MainActivity extends ActionBarActivity {

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

    setContentView(R.layout.activity_main);
    TabLayout tabLayout = (TabLayout) findViewById(R.id.tab_layout);
    tabLayout.addTab(tabLayout.newTab().setText("Newsfeed"));
    tabLayout.addTab(tabLayout.newTab().setText("Random"));

    tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
        @Override
        public void onTabSelected(TabLayout.Tab tab) {
            // IDEALLY HERE, I'd like to do something like
            // tab.setFragment(new MainFragment()).
        }

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

        }

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

        }
    });
 }
Run Code Online (Sandbox Code Playgroud)

所以我想覆盖我的onTabSelected和onTabReselected方法,以便在两个选项卡之间切换导致分别显示两个不同的片段.我在网上找不到很多关于独立于ViewPager的新TabLayout.

有线索吗?谢谢!

Com*_*are 7

@Override
public void onTabSelected(TabLayout.Tab tab) {
  Fragment f=heyWhatFragmentGoesInThisTab(tab);

  getFragmentManager()
    .beginTransaction().replace(R.id.where_the_tab_contents_go, f).commit();
}
Run Code Online (Sandbox Code Playgroud)

你需要写的地方:

  • heyWhatFragmentGoesInThisTab()返回Fragment应根据所选选项卡显示的内容,以及

  • R.id.where_the_tab_contents_go,这是一个FrameLayout充当活动片段的容器

IOW,您可以更改片段以响应与更改片段TabLayout相同的方式,以响应操作栏项目单击,导航抽屉项目单击或任何其他GUI事件.