【问题标题】:Tabs doesn't show标签不显示
【发布时间】:2016-07-10 10:40:33
【问题描述】:

我想在 myActivity 中添加选项卡,当我单击一些选项卡时,会创建并添加片段。但是现在当我单击选项卡时,什么也没发生。 标签活动:

public class TabsActivity extends FragmentActivity {

    Fragment directFragmentTab = new Direct();
    Fragment adventuresFragmentTab = new AdventuresFragment();
    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.tabs_activity);


        TabLayout tabLayout = (TabLayout) findViewById(R.id.tab_layout);
        tabLayout.addTab(tabLayout.newTab().setText("Tab 1"));
        tabLayout.addTab(tabLayout.newTab().setText("Tab 2"));

        tabLayout.setTabGravity(TabLayout.GRAVITY_FILL);
        FragmentManager fragmentManager = getSupportFragmentManager();
        final ViewPager viewPager = (ViewPager) findViewById(R.id.pager);
        final ViewPagerAdapter adapter = new ViewPagerAdapter(fragmentManager, tabLayout.getTabCount())
                 {
            @Override
            public int getCount() {
                return 0;
            }

            @Override
            public boolean isViewFromObject(View view, Object object) {
                return false;
            }
        };
        viewPager.setAdapter(adapter);
        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) {

            }
        });
    }
}

ViewPagerAdapter:

public class ViewPagerAdapter extends FragmentStatePagerAdapter {
    int mNumOfTabs;

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


    @Override
    public android.support.v4.app.Fragment getItem(int position) {

        switch (position) {
            case 0:
                Direct tab1 = new Direct();
                return tab1;
            case 1:
                AdventuresFragment tab2 = new AdventuresFragment();
                return tab2;


            default:
                return null;
        }
    }

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

我做错了什么?代码编译没有错误,但我错过了一些逻辑。

【问题讨论】:

  • 不确定那里发生了什么,但看起来不正确。最简单的方法是使用setupWithViewPager(),看这里:guides.codepath.com/android/…
  • 检查 public int getCount() { return 0; } 在 vi​​ewpager 适配器中。它应该返回计数
  • 它返回一个计数 public int getCount() { return mNumOfTabs; }

标签: android android-layout android-viewpager android-tabs android-sdk-tools


【解决方案1】:

您不应进一步覆盖 ViewPagerAdapter 中的方法。做吧

final ViewPagerAdapter adapter = new ViewPagerAdapter(fragmentManager, tabLayout.getTabCount());

【讨论】:

    【解决方案2】:

    试试这个我正在使用相同的代码

     final ViewPagerAdapter adapter = new ViewPagerAdapter(fragmentManager, tabLayout.getTabCount())
                 {
            @Override
            public int getCount() {
                return 0;
            }
    
            @Override
            public boolean isViewFromObject(View view, Object object) {
                return false;
            }
        };
    

    替换为

    final PagerAdapter adapter = new PagerAdapter(getSupportFragmentManager(), tabLayout.getTabCount());
    

    像这样编辑您的代码

       TabLayout tabLayout = (TabLayout) findViewById(R.id.tab_layout);
        tabLayout.addTab(tabLayout.newTab().setText("Tab 1"));
        tabLayout.addTab(tabLayout.newTab().setText("Tab 2"));
        tabLayout.setTabGravity(TabLayout.GRAVITY_FILL);
    
        final ViewPager viewPager = (ViewPager) findViewById(R.id.pager);
        final PagerAdapter adapter = new PagerAdapter(getSupportFragmentManager(), tabLayout.getTabCount());
        viewPager.setAdapter(adapter);
        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) {
            }
        });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-08-31
      • 2018-02-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-09-26
      • 2018-01-20
      • 1970-01-01
      相关资源
      最近更新 更多