在滑动抽屉项目之间滑动后,TabLayout和ViewPager -Tabs不起作用

时间:2015-12-01 11:26:40

标签: android android-viewpager slidingdrawer android-tablayout

TabLayout和ViewPager - 在滑动的抽屉项目之间滑动后,点击选项卡不起作用。

我在有滑动抽屉和Tablayout的应用上工作。 我参考了这个教程For Sliding DrawerFor TabLayout

内部滑动抽屉

  1. 任务列表 - > TabLayout(Tabs(Today,Monthly,Yearly))
  2. 设置
  3. 订单
  4. 我在Sliding Drawer和Tablayout之间有问题。 第一次viewpager加载正确。但是当我移动到下一个抽屉项目(设置片段)之后,返回到TaskList选项卡片段viewpager无法加载任何片段,当滑动该寻呼机然后加载一些片段。

    这里是Java代码

    public class TaskListFragment extends Fragment {
    private Toolbar toolbar;
    private TabLayout tabLayout;
    private ViewPager viewPager;
    
    public TaskListFragment() {
        // Required empty public constructor
    }
    
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    
    }
    
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.fragment_my_page, container, false);
    
        viewPager = (ViewPager)rootView.findViewById(R.id.viewpager);
        tabLayout = (TabLayout)rootView.findViewById(R.id.tabs);
        tabLayout.setupWithViewPager(viewPager);
        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) {
    
            }
        });
    
        // Inflate the layout for this fragment
        return rootView;
    }
    
    private void setupViewPager(ViewPager viewPager) {
        ViewPagerAdapter adapter = new ViewPagerAdapter(getFragmentManager());
        adapter.addFragment(new Mypage_TodayFragment(), "TODAY");
        adapter.addFragment(new Mypage_TodayFragment(), "WEEKLY");
        adapter.addFragment(new Mypage_TodayFragment(), "MONTHLY");
        viewPager.setAdapter(adapter);
    }
    
    class ViewPagerAdapter extends FragmentPagerAdapter {
        private final List<Fragment> mFragmentList = new ArrayList<>();
        private final List<String> mFragmentTitleList = new ArrayList<>();
    
        public ViewPagerAdapter(FragmentManager manager) {
            super(manager);
        }
    
        @Override
        public Fragment getItem(int position) {
            return mFragmentList.get(position);
        }
    
        @Override
        public int getCount() {
            return mFragmentList.size();
        }
    
        public void addFragment(Fragment fragment, String title) {
            mFragmentList.add(fragment);
            mFragmentTitleList.add(title);
        }
    
        @Override
        public CharSequence getPageTitle(int position) {
            return mFragmentTitleList.get(position);
        }
    }
    @Override
    public void onAttach(Activity activity) {
        super.onAttach(activity);
    }
    
    @Override
    public void onDetach() {
        super.onDetach();
    } 
    

    这里.XML代码

       <android.support.design.widget.CoordinatorLayout
            android:layout_width="match_parent"
            android:layout_height="262dp"
            android:id="@+id/view"
            android:layout_weight="0.16">
    
            <android.support.design.widget.TabLayout
                android:id="@+id/tabs"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                app:tabMode="fixed"
                app:tabGravity="fill"
                app:tabBackground="@drawable/mytabselector"
                app:tabIndicatorColor="@color/Orange" />
    
        <android.support.v4.view.ViewPager
            android:id="@+id/viewpager"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="50dp"
            app:layout_behavior="@string/appbar_scrolling_view_behavior"/>
    
           </android.support.design.widget.CoordinatorLayout>
    

    先谢谢!!

1 个答案:

答案 0 :(得分:15)

尝试使用此代替

ViewPagerAdapter adapter = new ViewPagerAdapter(getFragmentManager());

DO

ViewPagerAdapter adapter = new ViewPagerAdapter(getChildFragmentManager());

这是因为你在一个片段中有一个viewpager,这个viewpager应该用来进行片段事务的片段管理器应该是一个childfragmentmanager