* The purpose of this method is set The current display ui
*
* @param id the ui that has to be displayed
*/
public void setDisplay(int id) {
if (mDrawerLayout.isDrawerOpen(GravityCompat.START)) {
mDrawerLayout.closeDrawer(GravityCompat.START);
}
HideKeyboard.hideKeyboard(HomepageActivity.this);
Intent intent;
switch (id) {
//Open up home fragment
case AppConstants.DISPLAY_HOME:
if (!(mFragmentManager.findFragmentById(R.id.fragment_container) instanceof FragmentHome)) {
mFragment = new FragmentHome();
replaceFragment(mFragment, AppConstants.HOME_FRAGMENT);
}
break;
//opens up the setting section
case AppConstants.DISPLAY_SETTING:
if (!(mFragmentManager.findFragmentById(R.id.fragment_container) instanceof FragmentSetting)) {
mFragment = new FragmentSetting();
replaceFragment(mFragment, AppConstants.SETTING_FRAGMENT);
}
break;
//display the logout dialog
case AppConstants.DISPLAY_LOGOUT:
DialogManager.getInstance().showLogOutLogOut(this);
break;
//display the notification section
case AppConstants.DISPLAY_NOTIFICATION:
if (!(mFragmentManager.findFragmentById(R.id.fragment_container) instanceof FragmentNotification)) {
mFragment = new FragmentNotification();
replaceFragment(mFragment, AppConstants.NOTIFICATION_FRAGMENT);
}
break;
default:
//Setup Home Fragment as default fragment
if (!(mFragmentManager.findFragmentById(R.id.fragment_container) instanceof FragmentHome)) {
mFragment = new FragmentHome();
replaceFragment(mFragment, AppConstants.HOME_FRAGMENT);
}
break;
}
}
/* * @paramを交換しなければならないの断片を断片化* * 既存mFragment を交換することによりmFragmentを挿入 * @paramフラグメント */
public void replaceFragment(final Fragment fragment, final String name) {
if(mFragmentManager.findFragmentById(R.id.fragment_container)instanceof FragmentHome) {
mFragmentManager.beginTransaction()
.replace(R.id.fragment_container, fragment, name)
.addToBackStack(name)
.commit();
} else {
mFragmentManager.beginTransaction()
.replace(R.id.fragment_container, fragment).
commit();
}
}
のタグに名前を付けます
/** *この方法の目的は、スタックから */ 公共ボイドremoveFragmentFromStack(){
0123断片を除去することです
if (mFragmentManager.findFragmentById(R.id.fragment_container) instanceof FragmentHome) {
exitFromApp();
} else {
mFragmentManager.popBackStackImmediate();
}
}
試しましたか? 'try { activity.getSupportFragmentManager()。popBackStackImmediate(null、 FragmentManager.POP_BACK_STACK_INCLUSIVE); } catch(IllegalStateException e){ e.printStackTrace(); } ' –
あなたはフラグメントを追加しています、なぜそれがバックスタックに追加されるのでしょうか?各断片を置き換えるだけで、後ろを押すとナビゲーション・ドロワーに移動します。 :https://stackoverflow.com/questions/18634207/difference-between-add-replace-and-addtobackstack –
関連するコードを共有してください。 –