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

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 总结 以上所述是小编给

  • 问题内容: 由于某些原因,我已经使用Spring PlatformTransactionManager手动执行了事务提交和回滚操作,我需要做的是设置一个钩子,以便在事务提交后执行后提交操作。 通过查看: 我没有看到我能确定交易是否成功,除了假设它没有假想。 而且我可以将AOP作为一种选择,但是以编程方式进行操作,也许使用回调方法呢? 问题答案: 你可以得到你想要什么以更简单的方式,和 使用,您可以