我正在使用 BottomNavigationView 和 Fragment 编写一个应用程序,以编程方式更新布局。
我正在尝试使用 Stack 来允许用户单击返回并返回上一个片段。我曾尝试在膨胀新片段后使用 addToBackStack 但是当按下后退时尽管布局正确更改,所选项目菜单不会随之更改。
所以我决定创建一个自定义的 Fragment 堆栈并使用 setSelectedItemId 更改所选项目,但此操作使应用程序崩溃。我通常使用了很多时间,但我无法理解这种行为。
谢谢您的帮助。
public class MainActivity extends FragmentActivity {
private FragmentManager fm = getSupportFragmentManager();
private Logger logger = Logger.getLogger("global");
private BottomNavigationView bnv;
private CustomStack customStack = new CustomStack();
private BottomNavigationView.OnNavigationItemSelectedListener mOnNavigationItemSelectedListener
= new BottomNavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
Fragment centerFragment;
switch (item.getItemId()) {
case R.id.navigation_home:
centerFragment = new Fragment1();
replaceCenterLayoutFragment(centerFragment);
customStack.push(centerFragment);
return true;
case R.id.navigation_map:
centerFragment = new Fragment2();
bnv.setSelectedItemId(R.id.navigation_interest);
return true;
case …Run Code Online (Sandbox Code Playgroud)