Fragment 中 commit already called
每一个实例化后的 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相关推荐
- android fragment 抽屉,android – 更改Fragment中的导航抽屉项目
我有一个MainActivity启动导航抽屉. 也有一些碎片. 我需要从片段内部更改导航抽屉列表的标题. 我尝试了这个内部片段: navMenuTitles = getActivity().getRe ...
- 在fragment中引用ListView
前言:前段时间想在fragment中做出一个ListView列表,不过一直都是UI的闪退,让我一直不知道怎么办,很是苦恼,不过后来才发现了一个新的东西叫做ListFragment,所以这次主要是讲一下 ...
- android add fragment,fragment中的add和replace方法的区别浅析
使用 FragmentTransaction 的时候,它提供了这样两个方法,一个 add , 一个 replace ,对这两个方法的区别一直有点疑惑. 我觉得使用 add 的话,在按返回键应该是回退到 ...
- overridePendingTransition 方法在Fragment 中使用
overridePendingTransition 方法在直接卸载Fragment 中无法识别 这个使用可以在前面添加getActivity 即可使用了 getActivity().override ...
- 如何在Fragment中使用findViewById
findViewById方法却只能被用在Activity类中,如果想在fragment中使用, 需要在findViewById前面 添加getView(); 下面是一段代码, public class ...
- Fragment 中使用 getLayoutInflater() 的问题
问题: 我想在一个Fragment的ListView中显示我的搜索结果 但在这里报错: LayoutInflater inflater = getLayoutInflater(); "The ...
- Fragment中调用getActivity为null的问题
Fragment中调用getActivity为null的问题
- Fragment中使用viewLifecycleOwner/getActivity/this
观察liveData使用生命周期 如图:当liveData想在fragment里观察的时候,可以使用getActivity/this/getViewLifecycleOwner. getActivit ...
- Android 在Fragment中执行onActivityResult不被调用的简单解决方法
Android 在Fragment中执行onActivityResult不被调用的简单解决方法 参考文章: (1)Android 在Fragment中执行onActivityResult不被调用的简单 ...
最新文章
- 一、typescript介绍和安装
- KVM 虚拟机在 IBM System x 上应用_图文详解桥接网络配置
- 【Linux病毒】阿里云+腾讯云服务器的 kdevtmpfsi(H2Miner挖矿蠕虫变种)病毒处理(5个详细步骤)
- disconf mysql_disconf-web 安装
- MFC--CColorDialog的使用
- 计算机服务哪些不能关闭,Win7系统下哪些系统服务不能关闭
- 用adb 启动camera
- Head First Java Stick 01
- Linux命令备忘实例——排序和基本统计命令
- 文档多人协同编辑底层算法是如何实现的?
- 常用的集成TTL门电路
- MacOS上如何将MOV文件转换为MP4
- 大学计算机考试满分多少分,自主招生考试多少分 最多降多少分
- 有关“安装程序启动安装引擎失败:不支持此接口”错误的解决方法
- 根据电话号码获取联系人姓名
- ai修复图片 python_百度AI攻略:拉伸图像恢复
- ubuntu18.04使用蓝牙适配器
- ANI漏洞微软官方补丁KB925902 下载
- MySQL加密存储,解密读取
- 解析iebook超级精灵的iebk共享论