Android 在底部航行中保持回撤
我在android应用程序中使用底部导航。我有5个片段A,B,C,D,E。片段B包含另一个片段B1。当我反向按片段B1时,它关闭应用程序。当从片段B1向后按压时,我如何移动到片段B 这是我的密码Android 在底部航行中保持回撤,android,android-fragments,Android,Android Fragments,我在android应用程序中使用底部导航。我有5个片段A,B,C,D,E。片段B包含另一个片段B1。当我反向按片段B1时,它关闭应用程序。当从片段B1向后按压时,我如何移动到片段B 这是我的密码 bottomNavigationView.setOnNavigationItemSelectedListener( item -> { Fragment fragment = null;
bottomNavigationView.setOnNavigationItemSelectedListener(
item -> {
Fragment fragment = null;
switch (item.getItemId()) {
case R.id.A:
fragment = new A();
break;
case R.id.B:
fragment = new B();
break;
case R.id.C:
fragment = new C();
break;
case R.id.D:
fragment = new D();
break;
case R.id.E:
fragment = new E();
break;
}
return loadFragment(fragment);
});
private boolean loadFragment(Fragment fragment) {
//switching fragment
if (fragment != null) {
getSupportFragmentManager()
.beginTransaction()
.replace(R.id.main_fragment, fragment)
.commit();
return true;
}
return false;
}
打开B1片段时,请使用此
private boolean loadFragmentB1(Fragment fragment) {
//switching fragment
if (fragment != null) {
getSupportFragmentManager()
.beginTransaction()
.replace(R.id.main_fragment, fragment)
.commit();
return true;
当打开除B1以外的其他片段时,使用此
private boolean loadFragment(Fragment fragment) {
//switching fragment
if (fragment != null) {
getSupportFragmentManager()
.beginTransaction()
.addToBackStack(null)
.replace(R.id.main_fragment, fragment)
.commit();
return true;
}
return false;
}
在activity override on backpressed上,如下所示
@Override
public void onBackPressed(){
if (getSupportFragmentManager().getBackStackEntryCount() != 0) {
getSupportFragmentManager().popBackStack();
} else {
super.onBackPressed();
finish();
}
}
打开B1片段时,请使用此
private boolean loadFragmentB1(Fragment fragment) {
//switching fragment
if (fragment != null) {
getSupportFragmentManager()
.beginTransaction()
.replace(R.id.main_fragment, fragment)
.commit();
return true;
当打开除B1以外的其他片段时,使用此
private boolean loadFragment(Fragment fragment) {
//switching fragment
if (fragment != null) {
getSupportFragmentManager()
.beginTransaction()
.addToBackStack(null)
.replace(R.id.main_fragment, fragment)
.commit();
return true;
}
return false;
}
在activity override on backpressed上,如下所示
@Override
public void onBackPressed(){
if (getSupportFragmentManager().getBackStackEntryCount() != 0) {
getSupportFragmentManager().popBackStack();
} else {
super.onBackPressed();
finish();
}
}
它工作正常,但在回按时,底部导航中的选定项没有变化。当我回按B1时,它将进入主片段,但底部导航中的选定项仍然指向BYO。您可以通过navigationView.getMenu().getItem(0)更改选定项。setChecked(true);它将始终设置片段A,我所需要的是当用户从B1后退时,它将移动到B,当从B后退时,它将移动到A,并将A设置为选定项。但我无法实现itLet的假设用户在B1片段上,他从底部导航中选择E,当按下back时,它应该移动到B1,但它正在移动到BIt的工作状态良好,但在按下back时,底部导航中的所选项目没有变化当我按下B1时,它将进入主片段,但bottom导航中的选定项仍指向by您可以通过navigationView.getMenu().getItem(0).setChecked(true)更改选定项;它将始终设置片段A,我所需要的是当用户从B1后退时,它将移动到B,当从B后退时,它将移动到A,并将A设置为选定项。但我无法实现itLet的假设用户在B1片段上,他从底部导航选择E,当按下back时,它应该移动到B1,但它正在移动到B