从第一个片段切换到第二个片段后,底部选项卡图标仍然显示第一个图标

After switching from first fragment to second fragment, the bottom tab icon still shows first icon

当用户选择了一个联系人时,我正在从第一个片段切换到第二个片段。我的应用切换到第二个片段,但选项卡图标仍显示第一个片段处于选中状态。

这是我用来切换到第二个片段的代码。

Fragment fragment = new ItemSecondFragment(); getActivity().getSupportFragmentManager().beginTransaction().replace(R.id.content_frame, fragment).addToBackStack(null).commit();

其中 R.id.content_frame 是我的框架布局。

如何解决上述问题?

让你的底部标签栏 public 在你的 activity 中保持静态,然后像这样通过底部栏切换器转到第二个片段 @Override

public static BottomBar mBottomBar;
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

}

在你的片段中

@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    MainActivity.mBottomBar.selectTabAtPosition(2);

}

我使用了下面的代码来设置切换一个片段到另一个片段时的选项卡图标

BottomNavigationView bottomNavigationView = (BottomNavigationView) findViewById(R.id.navigation);


View view = bottomNavigationView.findViewById(R.id.tab_calls);
view.performClick();

其中 R.id.tab_calls 是我的第二个片段。

试试这个代码。

private BottomNavigationView.OnNavigationItemSelectedListener mOnNavigationItemSelectedListener
            = new BottomNavigationView.OnNavigationItemSelectedListener() {

        @Override
        public boolean onNavigationItemSelected(@NonNull MenuItem item) {
            switch (item.getItemId()) {
                case R.id.tab_home:
                    fragment= TabOne.newInstance();
                    item.setChecked(true);
                    break;
                case R.id.tab_email:
                    fragment= TabTwo.newInstance();
                    item.setChecked(true);
                    break;
                case R.id.tab_members:
                    fragment= TabThree.newInstance();
                    item.setChecked(true);
                    break;
                case R.id.tab_link:
                    fragment= TabFour.newInstance();
                    item.setChecked(true);
                    break;
            }
            final FragmentTransaction transaction = fragmentManager.beginTransaction();
            transaction.replace(R.id.content, fragment).commit();
            return false;
        }

    };`

你可以像这样使用:

View view = bottomNavigationView.findViewById(R.id.nav_button_two);
view.performClick();