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

Android 从第一个片段切换到第二个片段后,底部选项卡图标仍然显示第一个图标,android,android-fragments,android-fragmentactivity,bottomnavigationview,Android,Android Fragments,Android Fragmentactivity,Bottomnavigationview,当用户选择联系人时,我将从第一个片段切换到第二个片段。我的应用程序切换到第二个片段,但选项卡图标仍显示选定的第一个片段 这是我用来切换到第二个片段的代码 Fragment Fragment=new ItemSecondFragment()getActivity().getSupportFragmentManager().beginTransaction().replace(R.id.content_frame,fragment).addToBackStack(null.commit() 其中R.

当用户选择联系人时,我将从第一个片段切换到第二个片段。我的应用程序切换到第二个片段,但选项卡图标仍显示选定的第一个片段

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

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

其中R.id.content\u frame是我的框架布局


如何解决上述问题?

在活动中使底部选项卡栏保持公共静态,并转到底部栏切换器的第二个片段,如@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();

}

在活动中将底部选项卡栏设置为公共静态,然后通过底部栏切换器转到第二个片段,如@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();

}

在将一个片段切换到另一个片段时,我使用以下代码设置选项卡图标

@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\u calls是我的第二个片段。

在将一个片段切换到另一个片段时,我使用以下代码设置选项卡图标

@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\u调用是我的第二个片段。

试试下面的代码

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

    };`
试试这个代码

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();

您可以使用如下方法:

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

请用xmltableout.Tab=tabLayout.getTabAt(someIndex)显示完整的代码;tab.select();按照此链接欢迎使用堆栈溢出!如果您希望获得进一步的帮助,您可能需要添加xml和更多的代码。我重新格式化并修复了语法,以更好地用英语表达。请用xmltablelayout.Tab=tabLayout.getTabAt(someIndex)显示完整的代码;tab.select();按照此链接欢迎使用堆栈溢出!如果您希望获得进一步的帮助,您可能需要添加xml和更多的代码。我重新格式化并修复了语法,以更好地使用英语。但我正在使用BottomNavigation栏。如果它是BottomNavigationView setSelectedItemId(int itemId),请尝试此操作,但我正在使用BottomNavigation栏。如果它是BottomNavigationView setSelectedItemId(int itemId),请尝试此操作