Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android TableLayout setOnTabSelectedListener不工作_Java_Android_Android Tablayout - Fatal编程技术网

Java Android TableLayout setOnTabSelectedListener不工作

Java Android TableLayout setOnTabSelectedListener不工作,java,android,android-tablayout,Java,Android,Android Tablayout,假设我有MainActivity类,其中TabLayout和ViewPager用相应的4个页面初始化 MainActivity.class public class MainActivity extends AppCompatActivity { private SectionsPagerAdapter mSectionsPagerAdapter; private ViewPager mViewPager; @Override protected void on

假设我有
MainActivity
类,其中
TabLayout
ViewPage
r用相应的4个页面初始化

MainActivity.class

public class MainActivity extends AppCompatActivity {
    private SectionsPagerAdapter mSectionsPagerAdapter;
    private ViewPager mViewPager;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);

        mSectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager());
        // Set up the ViewPager with the sections adapter.
        mViewPager = (ViewPager) findViewById(R.id.pager);
        mViewPager.setAdapter(mSectionsPagerAdapter);

        // TabLayout
        TabLayout tabLayout = (TabLayout) findViewById(R.id.tab_layout);
        tabLayout.setupWithViewPager(mViewPager);
    }

    public class SectionsPagerAdapter extends FragmentPagerAdapter {
        public SectionsPagerAdapter(FragmentManager fm) {
            super(fm);
        }
        @Override
        public Fragment getItem(int position) {
            // getItem is called to instantiate the fragment for the given page.
            // Return a PlaceholderFragment (defined as a static inner class below).
            // return PlaceholderFragment.newInstance(position + 1);
            switch (position) {
                case 0:
                    ActivityZero tab0 = new ActivityZero();
                    return tab0;
                case 1:
                    ActivityOne tab1 = new ActivityOne();
                    return tab1;
                case 2:
                    ActivityTwo tab2 = new ActivityTwo();
                    return tab2;
                case 3:
                    ActivityThree tab3 = new ActivityThree();
                    return tab3;
                default:
                    return null;
            }
        }
        @Override
        public int getCount() {
            // Show 4 total pages.
            return 4;
        }
        //Setting the ICON
        private int[] imageResId = {
                R.drawable.ic_zero
                R.drawable.ic_one,
                R.drawable.ic_two,
                R.drawable.ic_three
        };
        @Override
        public CharSequence getPageTitle(int position) {
            Drawable image = ContextCompat.getDrawable(getApplicationContext(), imageResId[position]);
            image.setBounds(0, 0, image.getIntrinsicWidth(), image.getIntrinsicHeight());
            SpannableString sb = new SpannableString(" ");
            ImageSpan imageSpan = new ImageSpan(image, ImageSpan.ALIGN_BOTTOM);
            sb.setSpan(imageSpan, 0, 1, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
            return sb;
        }
    }
}
上面的代码一切正常,但是当我在
onCreate
中添加
setOnTabSelectedListener
时:

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);

        mSectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager());
        // Set up the ViewPager with the sections adapter.
        mViewPager = (ViewPager) findViewById(R.id.pager);
        mViewPager.setAdapter(mSectionsPagerAdapter);

        // TabLayout
        TabLayout tabLayout = (TabLayout) findViewById(R.id.tab_layout);
        tabLayout.setupWithViewPager(mViewPager);

        //This is what i'm trying to add
        mViewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout));
        tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
            @Override
            public void onTabSelected(TabLayout.Tab tab) {
                mViewPager.setCurrentItem(tab.getPosition());
                tab.getIcon().setAlpha(255);
            }
            @Override
            public void onTabUnselected(TabLayout.Tab tab) {
                tab.getIcon().setAlpha(127);
            }
            @Override
            public void onTabReselected(TabLayout.Tab tab) {
            }
        });
    }
当我运行时,一切正常,但当我滑动以更改选项卡时,应用程序不再响应并开始崩溃

我正在尝试获取所选选项卡
位置
,并在
所选页面上用
setAlpha(127)
设置
图标
,但运气不佳

注意:我正在使用支持库,我当前的API是8

更新:

12-04 11:32:12.342 11884-11884/com.sample.app.mysampleapp E/InputEventReceiver: Exception dispatching input event.
12-04 11:32:12.342 11884-11884/com.sample.app.mysampleapp E/MessageQueue-JNI: Exception in MessageQueue callback: handleReceiveCallback
12-04 11:32:12.402 11884-11884/com.sample.app.mysampleapp E/MessageQueue-JNI: java.lang.NullPointerException
12-04 11:32:12.402 11884-11884/com.sample.app.mysampleapp E/MessageQueue-JNI:     at com.sample.app.mysampleapp.MainActivity$1.onTabUnselected(MainActivity.java:53)
12-04 11:32:12.402 11884-11884/com.sample.app.mysampleapp E/MessageQueue-JNI:     at android.support.design.widget.TabLayout.selectTab(TabLayout.java:867)
12-04 11:32:12.402 11884-11884/com.sample.app.mysampleapp E/MessageQueue-JNI:     at android.support.design.widget.TabLayout$TabLayoutOnPageChangeListener.onPageSelected(TabLayout.java:1759)
12-04 11:32:12.402 11884-11884/com.sample.app.mysampleapp E/MessageQueue-JNI:     at android.support.v4.view.ViewPager.dispatchOnPageSelected(ViewPager.java:1794)
12-04 11:32:12.402 11884-11884/com.sample.app.mysampleapp E/MessageQueue-JNI:     at android.support.v4.view.ViewPager.scrollToItem(ViewPager.java:569)
12-04 11:32:12.402 11884-11884/com.sample.app.mysampleapp E/MessageQueue-JNI:     at android.support.v4.view.ViewPager.setCurrentItemInternal(ViewPager.java:553)
12-04 11:32:12.402 11884-11884/com.sample.app.mysampleapp E/MessageQueue-JNI:     at android.support.v4.view.ViewPager.onTouchEvent(ViewPager.java:2102)
12-04 11:32:12.402 11884-11884/com.sample.app.mysampleapp E/MessageQueue-JNI:     at android.view.View.dispatchTouchEvent(View.java:7396)
12-04 11:32:12.402 11884-11884/com.sample.app.mysampleapp E/MessageQueue-JNI:     at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2462)
12-04 11:32:12.402 11884-11884/com.sample.app.mysampleapp E/MessageQueue-JNI:     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2195)
12-04 11:32:12.402 11884-11884/com.sample.app.mysampleapp E/MessageQueue-JNI:     at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2468)
12-04 11:32:12.402 11884-11884/com.sample.app.mysampleapp E/MessageQueue-JNI:     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2210)
12-04 11:32:12.402 11884-11884/com.sample.app.mysampleapp E/MessageQueue-JNI:     at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2468)
12-04 11:32:12.402 11884-11884/com.sample.app.mysampleapp E/MessageQueue-JNI:     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2210)
12-04 11:32:12.402 11884-11884/com.sample.app.mysampleapp E/MessageQueue-JNI:     at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2468)
12-04 11:32:12.402 11884-11884/com.sample.app.mysampleapp E/MessageQueue-JNI:     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2210)
12-04 11:32:12.402 11884-11884/com.sample.app.mysampleapp E/MessageQueue-JNI:     at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2468)
12-04 11:32:12.402 11884-11884/com.sample.app.mysampleapp E/MessageQueue-JNI:     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2210)
12-04 11:32:12.402 11884-11884/com.sample.app.mysampleapp E/MessageQueue-JNI:     at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2468)
12-04 11:32:12.402 11884-11884/com.sample.app.mysampleapp E/MessageQueue-JNI:     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2210)
12-04 11:32:12.402 11884-11884/com.sample.app.mysampleapp E/MessageQueue-JNI:     at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2468)
12-04 11:32:12.402 11884-11884/com.sample.app.mysampleapp E/MessageQueue-JNI:     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2210)
12-04 11:32:12.402 11884-11884/com.sample.app.mysampleapp E/MessageQueue-JNI:     at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:2177)
12-04 11:32:12.402 11884-11884/com.sample.app.mysampleapp E/MessageQueue-JNI:     at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1482)
12-04 11:32:12.402 11884-11884/com.sample.app.mysampleapp E/MessageQueue-JNI:     at android.app.Activity.dispatchTouchEvent(Activity.java:2470)
12-04 11:32:12.402 11884-11884/com.sample.app.mysampleapp E/MessageQueue-JNI:     at android.support.v7.view.WindowCallbackWrapper.dispatchTouchEvent(WindowCallbackWrapper.java:60)
12-04 11:32:12.402 11884-11884/com.sample.app.mysampleapp E/MessageQueue-JNI:     at android.support.v7.view.WindowCallbackWrapper.dispatchTouchEvent(WindowCallbackWrapper.java:60)
12-04 11:32:12.402 11884-11884/com.sample.app.mysampleapp E/MessageQueue-JNI:     at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:2125)
12-04 11:32:12.402 11884-11884/com.sample.app.mysampleapp E/MessageQueue-JNI:     at android.view.View.dispatchPointerEvent(View.java:7581)
12-04 11:32:12.402 11884-11884/com.sample.app.mysampleapp E/MessageQueue-JNI:     at android.view.ViewRootImpl.deliverPointerEvent(ViewRootImpl.java:3571)
12-04 11:32:12.402 11884-11884/com.sample.app.mysampleapp E/MessageQueue-JNI:     at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:3503)
12-04 11:32:12.402 11884-11884/com.sample.app.mysampleapp E/MessageQueue-JNI:     at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:4614)
12-04 11:32:12.402 11884-11884/com.sample.app.mysampleapp E/MessageQueue-JNI:     at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:4592)
12-04 11:32:12.402 11884-11884/com.sample.app.mysampleapp E/MessageQueue-JNI:     at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:4696)
12-04 11:32:12.402 11884-11884/com.sample.app.mysampleapp E/MessageQueue-JNI:     at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:171)
12-04 11:32:12.402 11884-11884/com.sample.app.mysampleapp E/MessageQueue-JNI:     at android.os.MessageQueue.nativePollOnce(Native Method)
12-04 11:32:12.402 11884-11884/com.sample.app.mysampleapp E/MessageQueue-JNI:     at android.os.MessageQueue.next(MessageQueue.java:125)
12-04 11:32:12.402 11884-11884/com.sample.app.mysampleapp E/MessageQueue-JNI:     at android.os.Looper.loop(Looper.java:138)
12-04 11:32:12.402 11884-11884/com.sample.app.mysampleapp E/MessageQueue-JNI:     at android.app.ActivityThread.main(ActivityThread.java:4947)
12-04 11:32:12.402 11884-11884/com.sample.app.mysampleapp E/MessageQueue-JNI:     at java.lang.reflect.Method.invokeNative(Native Method)
12-04 11:32:12.402 11884-11884/com.sample.app.mysampleapp E/MessageQueue-JNI:     at java.lang.reflect.Method.invoke(Method.java:511)
12-04 11:32:12.402 11884-11884/com.sample.app.mysampleapp E/MessageQueue-JNI:     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1038)
12-04 11:32:12.402 11884-11884/com.sample.app.mysampleapp E/MessageQueue-JNI:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:805)
12-04 11:32:12.402 11884-11884/com.sample.app.mysampleapp E/MessageQueue-JNI:     at dalvik.system.NativeStart.main(Native Method)
12-04 11:32:12.412 11884-11884/com.sample.app.mysampleapp D/AndroidRuntime: Shutting down VM
12-04 11:32:12.412 11884-11884/com.sample.app.mysampleapp W/dalvikvm: threadid=1: thread exiting with uncaught exception (group=0x4131e2a0)
12-04 11:32:12.502 11884-11884/com.sample.app.mysampleapp E/AndroidRuntime: FATAL EXCEPTION: main
12-04 11:32:12.502 11884-11884/com.sample.app.mysampleapp E/AndroidRuntime: java.lang.NullPointerException
12-04 11:32:12.502 11884-11884/com.sample.app.mysampleapp E/AndroidRuntime:     at com.sample.app.mysampleapp.MainActivity$1.onTabUnselected(MainActivity.java:53)
12-04 11:32:12.502 11884-11884/com.sample.app.mysampleapp E/AndroidRuntime:     at android.support.design.widget.TabLayout.selectTab(TabLayout.java:867)
12-04 11:32:12.502 11884-11884/com.sample.app.mysampleapp E/AndroidRuntime:     at android.support.design.widget.TabLayout$TabLayoutOnPageChangeListener.onPageSelected(TabLayout.java:1759)
12-04 11:32:12.502 11884-11884/com.sample.app.mysampleapp E/AndroidRuntime:     at android.support.v4.view.ViewPager.dispatchOnPageSelected(ViewPager.java:1794)
12-04 11:32:12.502 11884-11884/com.sample.app.mysampleapp E/AndroidRuntime:     at android.support.v4.view.ViewPager.scrollToItem(ViewPager.java:569)
12-04 11:32:12.502 11884-11884/com.sample.app.mysampleapp E/AndroidRuntime:     at android.support.v4.view.ViewPager.setCurrentItemInternal(ViewPager.java:553)
12-04 11:32:12.502 11884-11884/com.sample.app.mysampleapp E/AndroidRuntime:     at android.support.v4.view.ViewPager.onTouchEvent(ViewPager.java:2102)
12-04 11:32:12.502 11884-11884/com.sample.app.mysampleapp E/AndroidRuntime:     at android.view.View.dispatchTouchEvent(View.java:7396)
12-04 11:32:12.502 11884-11884/com.sample.app.mysampleapp E/AndroidRuntime:     at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2462)
12-04 11:32:12.502 11884-11884/com.sample.app.mysampleapp E/AndroidRuntime:     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2195)
12-04 11:32:12.502 11884-11884/com.sample.app.mysampleapp E/AndroidRuntime:     at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2468)
12-04 11:32:12.502 11884-11884/com.sample.app.mysampleapp E/AndroidRuntime:     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2210)
12-04 11:32:12.502 11884-11884/com.sample.app.mysampleapp E/AndroidRuntime:     at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2468)
12-04 11:32:12.502 11884-11884/com.sample.app.mysampleapp E/AndroidRuntime:     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2210)
12-04 11:32:12.502 11884-11884/com.sample.app.mysampleapp E/AndroidRuntime:     at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2468)
12-04 11:32:12.502 11884-11884/com.sample.app.mysampleapp E/AndroidRuntime:     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2210)
12-04 11:32:12.502 11884-11884/com.sample.app.mysampleapp E/AndroidRuntime:     at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2468)
12-04 11:32:12.502 11884-11884/com.sample.app.mysampleapp E/AndroidRuntime:     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2210)
12-04 11:32:12.502 11884-11884/com.sample.app.mysampleapp E/AndroidRuntime:     at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2468)
12-04 11:32:12.502 11884-11884/com.sample.app.mysampleapp E/AndroidRuntime:     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2210)
12-04 11:32:12.502 11884-11884/com.sample.app.mysampleapp E/AndroidRuntime:     at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2468)
12-04 11:32:12.502 11884-11884/com.sample.app.mysampleapp E/AndroidRuntime:     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2210)
12-04 11:32:12.502 11884-11884/com.sample.app.mysampleapp E/AndroidRuntime:     at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:2177)
12-04 11:32:12.502 11884-11884/com.sample.app.mysampleapp E/AndroidRuntime:     at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1482)
12-04 11:32:12.502 11884-11884/com.sample.app.mysampleapp E/AndroidRuntime:     at android.app.Activity.dispatchTouchEvent(Activity.java:2470)
12-04 11:32:12.502 11884-11884/com.sample.app.mysampleapp E/AndroidRuntime:     at android.support.v7.view.WindowCallbackWrapper.dispatchTouchEvent(WindowCallbackWrapper.java:60)
12-04 11:32:12.502 11884-11884/com.sample.app.mysampleapp E/AndroidRuntime:     at android.support.v7.view.WindowCallbackWrapper.dispatchTouchEvent(WindowCallbackWrapper.java:60)
12-04 11:32:12.502 11884-11884/com.sample.app.mysampleapp E/AndroidRuntime:     at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:2125)
12-04 11:32:12.502 11884-11884/com.sample.app.mysampleapp E/AndroidRuntime:     at android.view.View.dispatchPointerEvent(View.java:7581)
12-04 11:32:12.502 11884-11884/com.sample.app.mysampleapp E/AndroidRuntime:     at android.view.ViewRootImpl.deliverPointerEvent(ViewRootImpl.java:3571)
12-04 11:32:12.502 11884-11884/com.sample.app.mysampleapp E/AndroidRuntime:     at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:3503)
12-04 11:32:12.502 11884-11884/com.sample.app.mysampleapp E/AndroidRuntime:     at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:4614)
12-04 11:32:12.502 11884-11884/com.sample.app.mysampleapp E/AndroidRuntime:     at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:4592)
12-04 11:32:12.502 11884-11884/com.sample.app.mysampleapp E/AndroidRuntime:     at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:4696)
12-04 11:32:12.502 11884-11884/com.sample.app.mysampleapp E/AndroidRuntime:     at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:171)
12-04 11:32:12.502 11884-11884/com.sample.app.mysampleapp E/AndroidRuntime:     at android.os.MessageQueue.nativePollOnce(Native Method)
12-04 11:32:12.502 11884-11884/com.sample.app.mysampleapp E/AndroidRuntime:     at android.os.MessageQueue.next(MessageQueue.java:125)
12-04 11:32:12.502 11884-11884/com.sample.app.mysampleapp E/AndroidRuntime:     at android.os.Looper.loop(Looper.java:138)
12-04 11:32:12.502 11884-11884/com.sample.app.mysampleapp E/AndroidRuntime:     at android.app.ActivityThread.main(ActivityThread.java:4947)
12-04 11:32:12.502 11884-11884/com.sample.app.mysampleapp E/AndroidRuntime:     at java.lang.reflect.Method.invokeNative(Native Method)
12-04 11:32:12.502 11884-11884/com.sample.app.mysampleapp E/AndroidRuntime:     at java.lang.reflect.Method.invoke(Method.java:511)
12-04 11:32:12.502 11884-11884/com.sample.app.mysampleapp E/AndroidRuntime:     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1038)
12-04 11:32:12.502 11884-11884/com.sample.app.mysampleapp E/AndroidRuntime:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:805)
12-04 11:32:12.502 11884-11884/com.sample.app.mysampleapp E/AndroidRuntime:     at dalvik.system.NativeStart.main(Native Method)

有人能帮我吗?非常感谢。

好的,我想我现在明白了,您使用的是
getIcon()
方法,但您从未通过
setIcon()
设置图标,因此在
getIcon()
上返回
null
。而是使用
getPageTitle()
来显示图标,因此选项卡甚至不知道有图标

我建议您修改
getPageTitle()
以始终返回
null
,然后在主活动类中创建选项卡设置方法
setupTabs()
,该方法应类似于:

private void setupTabs() {
    mTabLayout.getTabAt(0).setIcon(mTabIcons[0]);
    mTabLayout.getTabAt(1).setIcon(mTabIcons[1]);
    mTabLayout.getTabAt(2).setIcon(mTabIcons[2]);
    mTabLayout.getTabAt(2).setIcon(mTabIcons[3]);
}
同时将
imageResId
阵列从适配器移出到活动:

private int[] mTabIcons = {
    R.drawable.ic_zero
    R.drawable.ic_one,
    R.drawable.ic_two,
    R.drawable.ic_three
};
您还应该更改
设置AbsSelectedListener
以使用
表格布局。ViewPageFrontAbsSelectedListener
,以便为您处理保持选项卡同步的问题:

    tabLayout.setOnTabSelectedListener(new TabLayout.ViewPagerOnTabSelectedListener(mViewPager) {
        @Override
        public void onTabSelected(TabLayout.Tab tab) {
            super.onTabSelected(tab);
            tab.getIcon().setAlpha(255);
        }
        @Override
        public void onTabUnselected(TabLayout.Tab tab) {
            super.onTabUnselected(tab);
            tab.getIcon().setAlpha(127);
        }
    });
然后可以在
onCreate()
中调用
setupTabs()


使用
addOnTabSelectedListener

示例代码

tabLayout.addOnTabSelectedListener(object : OnTabSelectedListener {
            override fun onTabSelected(tab: TabLayout.Tab) {
                viewPager.setCurrentItem(tab.position)
            }

            override fun onTabUnselected(tab: TabLayout.Tab) {}
            override fun onTabReselected(tab: TabLayout.Tab) {}
        })

我怀疑调用
mviewpage.setCurrentItem(tab.getPosition())onTabSelected
回调中的code>(无限递归)。我认为您不需要告诉viewpager进行更改,当您
setupWithViewPager
时,所有这些都应该得到处理。我已经尝试删除这一行
mViewPager.setCurrentItem(tab.getPosition())但仍然有一个错误。唯一有效的是当我删除这一行时
tab.getIcon().setAlpha(255)
,但是我需要这个来
setAlpha
255
127
取消选中。我不知道到底是什么错误。也许我的问题是在每个标签上设置图标而不是文本?是否有其他方法来设置每个选项卡上的图标而不是文本?可能重复:SetOnAbsSelectedListener不推荐使用,请使用AddOnAbsSelectedListener代替。好的,谢谢,但我有一个问题。当我尝试这个时,图标太小了。我不需要删除这个`mviewpage.setCurrentItem(tab.getPosition());`,因为这将处理“单击”选项卡。我编辑了我的答案以使用侦听器界面,该界面将为您处理保持选项卡同步的问题,但您的代码与界面的功能完全相同。至于图标的大小,请确保可绘制内容的密度正确。请参见:SetOnAbsSelectedListener不推荐使用,请改用AddOnAbsSelectedListener
tabLayout.addOnTabSelectedListener(object : OnTabSelectedListener {
            override fun onTabSelected(tab: TabLayout.Tab) {
                viewPager.setCurrentItem(tab.position)
            }

            override fun onTabUnselected(tab: TabLayout.Tab) {}
            override fun onTabReselected(tab: TabLayout.Tab) {}
        })