当前位置: 首页 > 知识库问答 >
问题:

FragmentManager已在执行事务。提交后何时初始化寻呼机是安全的?

彭仲卿
2023-03-14
final FragmentTransaction trans = getSupportFragmentManager().beginTransaction();
trans.replace(R.id.container1, Fragment1.newInstance(loadedObject));
trans.replace(R.id.container2, Fragment2.newInstance(loadedObject));
trans.commit();

第二个片段包含一个android.support.v4.view.ViewPager和选项卡。在Resume中,我们按照如下方式初始化它

viewPager.setAdapter(adapter);
viewPager.setOffscreenPageLimit(adapter.getCount()); //the count is always < 4
tabLayout.setupWithViewPager(viewPager);

问题是android会抛出

IllegalStateException:FragmentManager已经在执行事务

该数据显示SetOffScreenPageLimit(...);是否已删除。有没有另一种方法可以避免这个问题?

在生命周期中,片段事务何时完成,以便我可以等待设置寻呼机?

共有1个答案

平光明
2023-03-14

如果您的目标是SDK24或更高版本,您可以使用:

FragmentTransaction.commitNow()

而不是commit()

如果您针对的是旧版本,请尝试拨打:

FragmentManager.executePendingTransactions()
 类似资料:
  • 我有一个视图,它具有激活viewpager的表格布局,当查看页面时,它工作正常,但如果我单击该视图上的某个项目,然后返回到过去的屏幕,我会得到: Java.Lang.IllegalStateException:FragmentManager已经在执行事务。 不确定这是否有所不同,但当我离开这个视图时,我从一个片段变成了一个活动。

  • 在代码里事务提交后方法结束,此时数据库是否已经执行了事务?因为事务提交返回了成功说明数据库已经处理了这个事务提交,但是此时数据库实际是否已经有执行完成这个事务?还是代码里事务提交完成后数据库实际并没有执行完成,只是先返回了成功的信息?现在碰到一个情况是方法提交结束后另外一个程序立刻调用存储过程查询数据会出现查不到的情况。

  • 我们使用HiberNate作为JPA提供程序。当其中一个实体更新时,我需要对Quartz计划执行一些更新。目前,该代码是在该实体的更新方法中调用的。但是,Quartz更改只有在事务成功提交时才会生效。 我考虑过实现一个实体监听器,但是我只想在实体被特定方法修改时执行这些更新,并且我不确定JPA实体监听器是否支持依赖注入,我需要依赖注入来获取对Quartz调度器的引用。 有没有办法以编程方式附加活动

  • 我怎样才能在Android中获得类似这样的东西? 我已经用深度页面转换器实现了一个viewpager,但是我想不出在后面添加项目预览的方法。

  • 我有一个JavaFX应用程序,它与用Java编写的控制器类一起使用FXML。在Java控制器中,在FXML节点初始化之前,我需要小心不要对其进行操作(否则我会得到一个NullPointerException),这在运行初始化方法之前是无法保证的。所以我发现自己经常这样做: 控制器在FXML文件中设置如下: 然后是Java文件中的控制器。 这是可行的,但它笨重且重复。我必须创建globalValue

  • 本文向大家介绍docker mysql启动时执行初始化sql,包括了docker mysql启动时执行初始化sql的使用技巧和注意事项,需要的朋友参考一下 1.拉取Mysql镜像 docker pull mysql:5.7 2.检查mysql镜像 3.本地创建mysql外挂的目录 4.启动mysql 5.进入容器,登录mysql,检查发现已创建库 test_database 总结 以上所述是小编给