如何解决BottomNavigationView 未选择片段 backstack 上的项目
我有一个小应用程序,里面有活动和两个片段。这些片段使用 BottomNavitationView 加载。
MonitoringFragment 在活动的 OnCreate 上加载。
我想将这个添加到 backstack 中,所以当我在第二个片段 (ConnectionFragment) 中并按下返回时,我会到达第一个片段。这工作正常。但是,BotttonNavigationView 不会更新(从第二个片段返回时不会将第一个项目设置为已选择。图 3)。我认为它本身并不能处理这种行为,我必须自己实现它,但我所做的每一次尝试都没有成功。
活动代码:
Fragment activeFragment = null;
BottomNavigationView bottomNavigationView = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
bottomNavigationView = findViewById(R.id.bottom_navigation);
bottomNavigationView.setonNavigationItemSelectedListener(item -> {
switch (item.getItemId()) {
case R.id.monitoring:
setCurrentFragment(new MonitoringFragment(),false);
break;
case R.id.connection:
setCurrentFragment(new ConnectionFragment(),true);
break;
}
return true;
});
setCurrentFragment(new MonitoringFragment(),true);
}
private void setCurrentFragment(Fragment fragment,boolean addToBackStack) {
FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
fragmentTransaction.replace(R.id.fragment_container,fragment);
if (addToBackStack) {
fragmentTransaction.addToBackStack(null);
}
fragmentTransaction.commit();
activeFragment = fragment;
}
谢谢!
解决方法
是的,BottomNavigationView 不是用 fragmentManager 设置的。当片段恢复时,您可以自己设置道具选择选项卡。
或者你可以使用带有BottomNavigationView的导航组件,那些一起工作没问题。
使用第二种方法时,按下后退按钮不会将您从第二个片段返回到第一个。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。