【问题标题】:Refresh tableLayout using ViewPager (with Fragments)使用 ViewPager(带 Fragments)刷新 tableLayout
【发布时间】:2015-07-01 09:12:02
【问题描述】:

我有个小问题

现状
我有一个 ViewPager,里面有 2 个片段。

    viewPager = (ViewPager) findViewById(R.id.viewpager);
    if (viewPager != null) {
        setupViewPager(viewPager);
    }

////////////////////

    private void setupViewPager(ViewPager viewPager) {
    adapter = new PagerAdapter (getSupportFragmentManager());
    adapter.addFragment(new Frag1(), "Frag1");
    adapter.addFragment(new Frag2(), "Frag2");
    viewPager.setAdapter(adapter);

}

我把它放在我的 TabLayout 中

    tabLayout = (TabLayout) findViewById(R.id.tabs);
    tabLayout.setupWithViewPager(viewPager);

它工作得很好,但现在我想在我按下导航抽屉中的按钮时更改标签内的片段。

这里:

     private void setupDrawerContent(final NavigationView navigationView) {
    navigationView.setNavigationItemSelectedListener(
            new NavigationView.OnNavigationItemSelectedListener() {
        @Override
        public boolean onNavigationItemSelected(MenuItem menuItem) {
            mDrawerLayout.closeDrawers();
            menuItem.setChecked(true);
            switch (menuItem.getItemId()) {
                case R.id.nav_menu1:
                    break;
                case R.id.nav_menu2:

                    here for example

                    break;
                case R.id.nav_menu3:
                    break;
            }

            return true;
        }

    });
}

我该怎么做? PS:我尝试为适配器添加一些notifyDataSetChanged()..invalidate()tabLayout ...我删除了代码,因为我做错了。

这是我的 PagerAdapter

    static class PagerAdapter extends FragmentPagerAdapter {
    private final List<Fragment> mFragments = new ArrayList<>();
    private final List<String> mFragmentTitles = new ArrayList<>();

    public PagerAdapter(FragmentManager fm) {
        super(fm);
    }

    public void addFragment(Fragment fragment, String title) {
        mFragments.add(fragment);
        mFragmentTitles.add(title);
    }

    @Override
    public Fragment getItem(int position) {
        return mFragments.get(position);
    }

    @Override
    public int getCount() {
        return mFragments.size();
    }

    @Override
    public CharSequence getPageTitle(int position) {
        return mFragmentTitles.get(position);
    }
}

【问题讨论】:

    标签: android android-fragments android-viewpager android-tablelayout


    【解决方案1】:

    用 FragmentStatePagerAdapter 代替 FragmentPagerAdapter 解决。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-17
      • 2013-07-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多