从第一个片段切换到第二个片段后,底部的标签图标仍显示第一个图标

时间:2017-06-12 11:47:21

标签: android android-fragments android-fragmentactivity bottomnavigationview

当用户选择了联系人时,我将从第一个片段切换到第二个片段。我的应用切换到第二个片段,但是标签图标仍然显示第一个片段已选中。

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

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

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

如何解决上述问题?

4 个答案:

答案 0 :(得分:2)

我将以下代码设置为将一个片段切换到另一个片段时的标签图标

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


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

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

答案 1 :(得分:0)

在您的活动中将您的底部标签栏设为公共静态,并通过底栏切换器转到第二个片段,如@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);

}

答案 2 :(得分:0)

试用此代码。

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;
        }

    };`

答案 3 :(得分:0)

您可以像这样使用方法:

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