我想在actionBar
中实现Home / Up按钮。我有一个活动( 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;
}
我需要最后一个案例来隐藏任何片段(显示主要活动窗口)并清除我的后台 - 回家,而不是回来。我怎么能做到这一点?
我使用AppCompat库。
答案 0 :(得分:1)
试试这个:
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是
popBackStack(String,int)和popBackStack(int,int)的标志:如果设置, 并且已经提供了后栈条目的名称或ID,然后全部 匹配的条目将被消耗,直到不匹配的条目为止 找到或达到堆栈的底部。