ActionBar 主页按钮 - 隐藏片段并清除返回堆栈
ActionBar Home button - hide fragment and clear back stack
我想在 actionBar
中实现 Home/Up 按钮。我有一个简单的应用程序,其中包含一个 Activity (A) 和两个片段(设置 (B) 和关于 ( C)).
在我发现使用 popBackStack
的其他问题中,但这不是解决方案,因为如果用户转到 A > B > C > B > C,后退按钮变为 C > B > C > B > A(这是正确的行为吗?)。
switch (item.getItemId()){
case R.id.action_settings:
// get preferences fragment
getFragmentManager().beginTransaction()
.replace(android.R.id.content, new PrefFragment())
.addToBackStack(null)
.commit();
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
return true;
case R.id.action_about:
// get about fragment
getFragmentManager().beginTransaction()
.replace(android.R.id.content, new AboutFragment())
.addToBackStack(null)
.commit();
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
return true;
case android.R.id.home:
// clear back stack and show home screen?
getSupportActionBar().setDisplayHomeAsUpEnabled(false);
return true;
}
我需要最后一个案例来隐藏任何片段(显示主要 activity window)并清除我的后台堆栈 - 回家,而不是返回。我怎样才能做到这一点?
我使用 AppCompat 库。
试试这个:
private void clearBackStack() {
FragmentManager manager = getSupportFragmentManager();
if (manager.getBackStackEntryCount() > 0) {
FragmentManager.BackStackEntry first = manager.getBackStackEntryAt(0);
manager.popBackStack(first.getId(), FragmentManager.POP_BACK_STACK_INCLUSIVE);
}
}
或致电
mFragmentManager.popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);
表格文档POP_BACK_STACK_INCLUSIVE是
Flag for popBackStack(String, int) and popBackStack(int, int): If set,
and the name or ID of a back stack entry has been supplied, then all
matching entries will be consumed until one that doesn't match is
found or the bottom of the stack is reached.
我想在 actionBar
中实现 Home/Up 按钮。我有一个简单的应用程序,其中包含一个 Activity (A) 和两个片段(设置 (B) 和关于 ( C)).
在我发现使用 popBackStack
的其他问题中,但这不是解决方案,因为如果用户转到 A > B > C > B > C,后退按钮变为 C > B > C > B > A(这是正确的行为吗?)。
switch (item.getItemId()){
case R.id.action_settings:
// get preferences fragment
getFragmentManager().beginTransaction()
.replace(android.R.id.content, new PrefFragment())
.addToBackStack(null)
.commit();
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
return true;
case R.id.action_about:
// get about fragment
getFragmentManager().beginTransaction()
.replace(android.R.id.content, new AboutFragment())
.addToBackStack(null)
.commit();
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
return true;
case android.R.id.home:
// clear back stack and show home screen?
getSupportActionBar().setDisplayHomeAsUpEnabled(false);
return true;
}
我需要最后一个案例来隐藏任何片段(显示主要 activity window)并清除我的后台堆栈 - 回家,而不是返回。我怎样才能做到这一点?
我使用 AppCompat 库。
试试这个:
private void clearBackStack() {
FragmentManager manager = getSupportFragmentManager();
if (manager.getBackStackEntryCount() > 0) {
FragmentManager.BackStackEntry first = manager.getBackStackEntryAt(0);
manager.popBackStack(first.getId(), FragmentManager.POP_BACK_STACK_INCLUSIVE);
}
}
或致电
mFragmentManager.popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);
表格文档POP_BACK_STACK_INCLUSIVE是
Flag for popBackStack(String, int) and popBackStack(int, int): If set, and the name or ID of a back stack entry has been supplied, then all matching entries will be consumed until one that doesn't match is found or the bottom of the stack is reached.