首页 > 解决方案 > 如何在片段的tablayout中执行onCLick Listener?

问题描述

您好,我正在使用 View Pager 制作可滑动的 tablayout。在此片段中滑动工作正常,但它不执行 onclick 事件。
滑动正在处理 TabLayout 单击不起作用?如何在 TabLayout 上添加点击监听器?在片段中我该怎么做?这是我的代码:

TabLayout tabLayout = view.findViewById(R.id.tablayout);
    tabLayout.addTab(tabLayout.newTab().setText("Tab 1"));
    tabLayout.addTab(tabLayout.newTab().setText("Tab 2"));
    tabLayout.addTab(tabLayout.newTab().setText("Tab 3"));
    tabLayout.setTabGravity(TabLayout.GRAVITY_FILL);

    final ViewPager viewPager = view.findViewById(R.id.pager);
    final PagerAdapter adapter = new PagerAdapter(((ProductActivity)context).getSupportFragmentManager(),tabLayout.getTabCount());
    viewPager.setAdapter(adapter);
    viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout));
    tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
        @Override
        public void onTabSelected(TabLayout.Tab tab) {
            viewPager.setCurrentItem(tab.getPosition());
            int position = tab.getPosition();
            switch (position){
                case 0:
                    Log.e("Position",String.valueOf(0));
                    break;
                case 1:
                    Log.e("Position",String.valueOf(1));
                    break;
                case 2:
                    Log.e("Position",String.valueOf(2));
                    break;
                    default:
                        break;
            }
        }

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

        }

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

        }
    });

}

pagerAdapter 是:

public PagerAdapter(FragmentManager fm,int mNoOfTabs) {
    super(fm);
    this.mNoOfTabs = mNoOfTabs;
}

@Override
public Fragment getItem(int position) {
    switch(position)
    {

        case 0:
            Tab1 tab1 = new Tab1();
            return tab1;
        case 1:
            Tab2 tab2 = new Tab2();
            return  tab2;
        case 2:
            Tab3 tab3 = new Tab3();
            return  tab3;
        default:
            return null;
    }
}

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

标签: androidandroid-fragmentsandroid-tablayout

解决方案


创建

viewPager = (ViewPager) findViewById(R.id.viewpager);
setupViewPager(viewPager);

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

设置视图寻呼机

private void setupViewPager(ViewPager viewPager) {
    ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager());
    adapter.addFragment(new Fragment1(), "Tab1");
    adapter.addFragment(new Fragment2(), "Tab2");
    viewPager.setAdapter(adapter);
}

ViewPagerAdapter

    *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 null;
            return mFragmentTitleList.get(position);
        }
    }*

这就是您如何使用带有片段的选项卡。并创建 Fragment1() 和 Fragment2() 类


推荐阅读