* 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;
}
}
/* * 기존 mFragment에게 * * @param 단편 @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();
}
}
의 태그 이름 * 교체되어야하는 단편을 대체하여 mFragment 삽입
/ ** *이 방법의 목적은 스택에서 */ 공개 무효 removeFragmentFromStack() {
0,123 단편을 제거한다
if (mFragmentManager.findFragmentById(R.id.fragment_container) instanceof FragmentHome) {
exitFromApp();
} else {
mFragmentManager.popBackStackImmediate();
}
}
시도하셨습니까? '시도 { 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 –
관련 코드 공유. –