我有一个小的应用程序与活动和两个片段内。这些片段将使用BottomNavitationView加载。
MonitoringFragment加载到Activity中的OnCreate上。
我想把这个片段添加到backstack中,这样当我在第二个片段(ConnectionFragment)中时,我按下back键,就可以到达第一个片段。这个很好用。但是,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;
}
字符串
谢谢你,谢谢
2条答案
按热度按时间jhdbpxl91#
是,BottomNavigationView未使用fragmentManager设置。当一个片段被恢复时,你可以自己设置prop select tab。
或者你可以使用导航组件和BottomNavigationView,它们可以一起工作。
使用第二种方法时,按下返回按钮不会将您从第二个片段返回到第一个片段。
zaqlnxep2#
面对类似的问题,我是这样解决的
我在我的navcontroller中添加了OnDestinationChangedListener,并在我的progect中创建了几个带有片段目标标签的数组列表。
当当前目的地位于这些片段之一时,选中底部菜单按钮
我希望代码示例比我的解释更清楚)
字符串