当用户选择了联系人时,我将从第一个片段切换到第二个片段。我的应用切换到第二个片段,但是标签图标仍然显示第一个片段已选中。
这是我用来切换到第二个片段的代码。
Fragment fragment = new ItemSecondFragment();
getActivity().getSupportFragmentManager().beginTransaction().replace(R.id.content_frame, fragment).addToBackStack(null).commit();
R.id.content_frame 是我的框架布局。
如何解决上述问题?
答案 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();