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

3qpi33ja  于 2023-08-06  发布在  Android
关注(0)|答案(1)|浏览(117)

我正在尝试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) {

        }
    });
 }

字符串
所以我想覆盖onTabSelected和onTabReselected方法,以便在两个选项卡之间切换,从而分别显示两个不同的片段。我在网上找不到太多关于独立于ViewPager的新TabLayout的信息。
有线索吗?谢谢!

c3frrgcw

c3frrgcw1#

@Override
public void onTabSelected(TabLayout.Tab tab) {
  Fragment f = heyWhatFragmentGoesInThisTab(tab);
  
  getFragmentManager()
    .beginTransaction()
    .replace(R.id.where_the_tab_contents_go, f)
    .commit();
}

字符串
在这里你需要写:

  • heyWhatFragmentGoesInThisTab()返回应根据所选选项卡显示的Fragment,以及
  • R.id.where_the_tab_contents_go,这是一个FrameLayout,用作活动片段的容器

IOW,你改变片段以响应TabLayout的方式与你改变片段以响应操作栏项点击、导航抽屉项点击或任何其他GUI事件的方式相同。

相关问题