android - 即使我执行 addToBackStack(null),为什么 FragmentManager 的 BackStackEntry 为 0
问题描述
private BaseFragment fragment;
private FragmentManager fragmentManager;
private FragmentManager fragmentManager1;
private FragmentTransaction aFragmentTransaction;
这是我的 OnCreate() 方法中的代码:
fragmentManager = getSupportFragmentManager();
fragmentManager.beginTransaction().replace(R.id.frame_container,
fragment).commit();
fragmentTitle = getResources().getString(fragment.getFragmentTitle());
setTitle(fragmentTitle);
....更多代码...
aFragmentTransaction = fragmentManager.beginTransaction();
aFragmentTransaction.replace(R.id.frame_container, fragment);
aFragmentTransaction.addToBackStack(null);
aFragmentTransaction.commit();
setTitle(getResources().getString(fragment.getFragmentTitle()));
这是 OnBackPressed() 方法中同一活动中的代码:
@Override
public void onBackPressed(){
fragmentManager1 = getSupportFragmentManager();
if (fragmentManager1.getBackStackEntryCount() > 0) {
fragmentManager1.popBackStack();
} else {
super.onBackPressed();
}
两者都在同一个活动中。当我调试时,BackStack 有 0 个元素。
编辑:执行 aFragmentTransaction.addToBackStack(null) 后,BackStack 仍然为空
解决方案
因为你替换它而不是添加它。这样做:
aFragmentTransaction.add(R.id.frame_container, fragment);
推荐阅读
- python - 在fabric2 Connection中,如何在fab命令行中使用hosts参数
- android - 表单编码方法必须至少包含一个@Field
- sql - 按多列和多行条件查找sql查询
- ftp - 无法使用流集将 JSON 响应转储到 CSV 文件中的 FTP 服务器
- spring-boot - 403 Forbidden on using JWT Authorization in springboot
- python - 小黄人游戏 - 解释一下?
- python - pygame.quit()、quit() 或 run = False?
- google-analytics - 如何从 Bigquery 中的 Google 分析导出中查询智能目标?
- javascript - 未捕获的类型错误:sel.add 不是函数
- python - Windows 10 上未解决的导入“MySQLdb”