每一个实例化后的 FragmentTransaction 的事物只能被提交一次,我开始时是定义了一个全局的  FragmentTransaction,然后就只在 onCreate() 方法中实例化了一次,但是我设置点击事件切换 fragment 时,会导致二次 commit,所以会报错。

@Overridepublic void onClick(View view) {switch (view.getId()) {case R.id.btn_first:mTransaction.hide(secondFragment).hide(thirdFragment).show(firstFragment).commit();break;case R.id.btn_second:mTransaction.hide(firstFragment).hide(thirdFragment).show(secondFragment).commit();break;case R.id.btn_third:mTransaction.hide(firstFragment).hide(secondFragment).show(thirdFragment).commit();break;default:break;}}

这个我们怎么解决呢?

@Overridepublic void onClick(View view) {// 实例化 mTransactionmTransaction = mManger.beginTransaction();switch (view.getId()) {case R.id.btn_first:mTransaction.hide(secondFragment).hide(thirdFragment).show(firstFragment).commit();break;case R.id.btn_second:mTransaction.hide(firstFragment).hide(thirdFragment).show(secondFragment).commit();break;case R.id.btn_third:mTransaction.hide(firstFragment).hide(secondFragment).show(thirdFragment).commit();break;default:break;}}

我们添加了一行代码,每一次我们发生点击事件时,都会重新实例化一下 mTransaction。

总结:当我们发现 commit already called 错误时,我们可以看看我们是不是在一个实例化里面多次重复 commit 了,如果是我们可以选择合并要 commit 的事件,或者重新实例化 FragmentTransaction。

Fragment 中 commit already called相关推荐

  1. android fragment 抽屉,android – 更改Fragment中的导航抽屉项目

    我有一个MainActivity启动导航抽屉. 也有一些碎片. 我需要从片段内部更改导航抽屉列表的标题. 我尝试了这个内部片段: navMenuTitles = getActivity().getRe ...

  2. 在fragment中引用ListView

    前言:前段时间想在fragment中做出一个ListView列表,不过一直都是UI的闪退,让我一直不知道怎么办,很是苦恼,不过后来才发现了一个新的东西叫做ListFragment,所以这次主要是讲一下 ...

  3. android add fragment,fragment中的add和replace方法的区别浅析

    使用 FragmentTransaction 的时候,它提供了这样两个方法,一个 add , 一个 replace ,对这两个方法的区别一直有点疑惑. 我觉得使用 add 的话,在按返回键应该是回退到 ...

  4. overridePendingTransition 方法在Fragment 中使用

    overridePendingTransition  方法在直接卸载Fragment 中无法识别 这个使用可以在前面添加getActivity 即可使用了 getActivity().override ...

  5. 如何在Fragment中使用findViewById

    findViewById方法却只能被用在Activity类中,如果想在fragment中使用, 需要在findViewById前面 添加getView(); 下面是一段代码, public class ...

  6. Fragment 中使用 getLayoutInflater() 的问题

    问题: 我想在一个Fragment的ListView中显示我的搜索结果 但在这里报错: LayoutInflater inflater = getLayoutInflater(); "The ...

  7. Fragment中调用getActivity为null的问题

    Fragment中调用getActivity为null的问题

  8. Fragment中使用viewLifecycleOwner/getActivity/this

    观察liveData使用生命周期 如图:当liveData想在fragment里观察的时候,可以使用getActivity/this/getViewLifecycleOwner. getActivit ...

  9. Android 在Fragment中执行onActivityResult不被调用的简单解决方法

    Android 在Fragment中执行onActivityResult不被调用的简单解决方法 参考文章: (1)Android 在Fragment中执行onActivityResult不被调用的简单 ...

最新文章

  1. 一、typescript介绍和安装
  2. KVM 虚拟机在 IBM System x 上应用_图文详解桥接网络配置
  3. 【Linux病毒】阿里云+腾讯云服务器的 kdevtmpfsi(H2Miner挖矿蠕虫变种)病毒处理(5个详细步骤)
  4. disconf mysql_disconf-web 安装
  5. MFC--CColorDialog的使用
  6. 计算机服务哪些不能关闭,Win7系统下哪些系统服务不能关闭
  7. 用adb 启动camera
  8. Head First Java Stick 01
  9. Linux命令备忘实例——排序和基本统计命令
  10. 文档多人协同编辑底层算法是如何实现的?
  11. 常用的集成TTL门电路
  12. MacOS上如何将MOV文件转换为MP4
  13. 大学计算机考试满分多少分,自主招生考试多少分 最多降多少分
  14. 有关“安装程序启动安装引擎失败:不支持此接口”错误的解决方法
  15. 根据电话号码获取联系人姓名
  16. ai修复图片 python_百度AI攻略:拉伸图像恢复
  17. ubuntu18.04使用蓝牙适配器
  18. ANI漏洞微软官方补丁KB925902 下载
  19. MySQL加密存储,解密读取
  20. 解析iebook超级精灵的iebk共享论

热门文章

  1. python运行时不显示cmd命令窗口的方法
  2. 四位达林顿_达林顿管的四种接法与常用型号
  3. pygame的小飞机游戏终于完成了
  4. Synchronized解析——如果你愿意一层一层剥开我的心
  5. Elasticsearch分析器(analyzer)以及与spring boot整合
  6. 探究下疯狂动物城Zootopia为何如此高分的原因
  7. renren-fest 问题集合
  8. 查看Python的安装目录
  9. 以太网交换机性能测试丢包的原因
  10. 项目经验 需求评审与技术评审