你好我正在使用BottomNavigationView
。 BottomNavigationView
中的每一項都會打開一個片段,它將存儲在後備堆棧中,但是如果多次選擇了一個後備堆棧,將會存儲該片段的最新實例。我的意思是當按下按鈕片段時只會打開一次。Android限制片段只有一次返回堆棧
比如,有3 fragments..A,B,C
片段模式:ABCBACAC
返回按輸出應該是:CAB-出口
但我會得到這個圖案 - CACABCBA退出
這裏是我using-代碼
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
switch (item.getItemId()){
case R.id.nav_home:
mFragment = getSupportFragmentManager().findFragmentByTag("Fragment_Home");
if(!(mFragment!=null && mFragment.isVisible())){
mFragmentManager.popBackStackImmediate("Fragment_Home", FragmentManager.POP_BACK_STACK_INCLUSIVE);
mFragmentTransaction = mFragmentManager.beginTransaction();
mFragmentTransaction.replace(R.id.container, new HomeFragment(), "Fragment_Home").addToBackStack("Fragment_Home").commit();
}
return true;
case R.id.nav_account:
mFragment = getSupportFragmentManager().findFragmentByTag("Fragment_Account");
if(!(mFragment != null && mFragment.isVisible())){
mFragmentManager.popBackStackImmediate("Fragment_Account", FragmentManager.POP_BACK_STACK_INCLUSIVE);
mFragmentTransaction = mFragmentManager.beginTransaction();
mFragmentTransaction.replace(R.id.container, new AccountFragment(), "Fragment_Account").addToBackStack("Fragment_Account").commit();
}
return true;
case R.id.nav_category:
mFragment = getSupportFragmentManager().findFragmentByTag("Fragment_Category");
if(!(mFragment != null && mFragment.isVisible())){
mFragmentManager.popBackStackImmediate("Fragment_Category", FragmentManager.POP_BACK_STACK_INCLUSIVE);
mFragmentTransaction = mFragmentManager.beginTransaction();
mFragmentTransaction.replace(R.id.container, new CategoryFragment(), "Fragment_Category").addToBackStack("Fragment_Category").commit();
}
return true;
}
return false;
}
@Override
public void onBackPressed() {
if (mDrawerLayout.isDrawerOpen(GravityCompat.START)) {
mDrawerLayout.closeDrawer(GravityCompat.START);
}
else if (getSupportFragmentManager().getBackStackEntryCount() > 0) {
getSupportFragmentManager().popBackStack();
}
else if (doubleBackToExitPressedOnce) {
finishAffinity();
}
else {
this.doubleBackToExitPressedOnce = true;
Toast.makeText(this, "Please BACK again to exit", Toast.LENGTH_SHORT).show();
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
doubleBackToExitPressedOnce = false;
}
}, 2000);
}
}
給我一些想法我的代碼有什麼問題。任何幫助,將不勝感激。
主要問題的詳細信息是,我必須使用底部導航視圖也做同樣的事情與我的導航視圖。所以我必須解決這個問題。但無論如何感謝您的幫助 –