How to refresh Android Fragment v1.3.0 in Java(如何在Java中刷新Android片段v1.3.0)
问题描述
从新的片段版本1.3.0开始,在其内部刷新片段似乎不能像在版本1.2.5中那样工作。
适用于我的项目的1.2.5版代码:
FragmentTransaction ft = getFragmentManager().beginTransaction();
if (Build.VERSION.SDK_INT >= 26) {
ft.setReorderingAllowed(false);
}
ft.detach(this).attach(this).commit();
但在v1.3.0中使用此选项无法刷新片段。
有没有人有解决这个问题的办法?我在发行说明中找不到详细说明可能出现问题的任何更改的文档。谢谢!
推荐答案
根据this issue:
这与Fragment 1.3.0-beta01 release notes中提到的新状态管理器的预期工作方式一样,是修复在添加输入片段视图(aosp/1427376)之前没有一致删除现有片段视图的问题的要求,这实际上修复了许多可能导致崩溃的边缘情况。
您可以更改代码,将此重新创建为两个单独的事务:
fun Fragment.recreateView() {
parentFragmentManager
.beginTransaction()
.detach(this)
.commitNow()
parentFragmentManager
.beginTransaction()
.attach(this)
.commitNow()
}
它接着说:
您可能希望启动b/173472486跟踪Lint警告以提供与此模式完全相同的快速修复,并启动b/165840276将第一类API添加到片段以重新创建其视图,而无需
detach()
/attach()
。
这篇关于如何在Java中刷新Android片段v1.3.0的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:如何在Java中刷新Android片段v1.3.0


基础教程推荐
- 由于对所需库 rt.jar 的限制,对类的访问限制? 2022-01-01
- 首次使用 Hadoop,MapReduce Job 不运行 Reduce Phase 2022-01-01
- 如何使用 Eclipse 检查调试符号状态? 2022-01-01
- 如何对 HashSet 进行排序? 2022-01-01
- 如何强制对超级方法进行多态调用? 2022-01-01
- 如何在不安装整个 WTP 包的情况下将 Tomcat 8 添加到 Eclipse Kepler 2022-01-01
- Spring Boot Freemarker从2.2.0升级失败 2022-01-01
- 在螺旋中写一个字符串 2022-01-01
- 如何使用 Stream 在集合中拆分奇数和偶数以及两者的总和 2022-01-01
- Java 中保存最后 N 个元素的大小受限队列 2022-01-01