【问题标题】:How to show fragment in android如何在android中显示片段
【发布时间】:2016-11-06 18:26:06
【问题描述】:

我正在使用 ViewPager 在 Activity1 上创建 3 个片段,
这是我的 viewPager 适配器:

 public class ViewPagerAdapter extends FragmentStatePagerAdapter {
    int mNumOfTabs;

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

    @Override
    public Fragment getItem(int position) {

        switch (position) {
            case 0:
                Fragment1 tab1 = new Fragment1();
                return tab1;
            case 1:
                Fragment2 tab2 = new Fragment2();
                return tab2;
            case 2:
                Fragment3 tab3 = new Fragment3();
                return tab3;
            default:
                return null;
        }
    }

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

}

这是活动:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_1);

    TabLayout tab_layout = (TabLayout) findViewById(R.id.tab_layout);
    tab_layout.addTab(tab_layout.newTab().setText("Frag1"));
    tab_layout.addTab(tab_layout.newTab().setText("Frag2"));
    tab_layout.addTab(tab_layout.newTab().setText("Frag3"));

    final ViewPager view_pager = (ViewPager) findViewById(R.id.viewpager);

    final ViewPagerAdapter adapter = new ViewPagerAdapter
            (getSupportFragmentManager(), tab_layout.getTabCount());

    view_pager.setAdapter(adapter);

    view_pager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tab_layout));

    tab_layout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {

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

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

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

}

当 Activity1 打开时,它会显示 Fragment1 。但我想改为显示 Fragment2 或 Fragment3。
我该怎么做?

【问题讨论】:

    标签: android android-fragments android-viewpager


    【解决方案1】:

    viewpager.setAdapter(adapter);之后添加这一行:

    viewPager.setCurrentItem(index);
    

    索引取决于你,你有多少片段。 tabLayout.getTabCount(); 将返回您的标签计数。但是索引是从 0 开始的。

    如果您有 3 个Fragment 并想显示第三个Fragment,您必须使用viewPager.setCurrentItem(2);

    【讨论】:

    • @1234abcd 没问题,我想你知道什么是索引!
    【解决方案2】:

    将 viewpager 的当前位置设置为您想要的位置,在您的情况下为 2 或 3。

     new Handler().post(new Runnable() {
                    @Override
                    public void run() {
                        mViewPager.setCurrentItem(desiredPos);
                    }
                });
    

    查看更多

    Android ViewPager setCurrentItem not working after onResume

    【讨论】:

      猜你喜欢
      • 2015-01-29
      • 1970-01-01
      • 2022-01-10
      • 1970-01-01
      • 2016-09-15
      • 1970-01-01
      • 2015-07-19
      • 2012-12-30
      • 1970-01-01
      相关资源
      最近更新 更多