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),请尝试此操作