我有一个导航抽屉,点击项目显示/隐藏/创建全屏碎片。
在大多数情况下,此代码效果很好。但有时,也许有1%的时间,在打开应用程序运行时,我会发现疯狂的全屏片段重叠。
我的代码有问题吗?或者也许Android中的其他东西,它无法识别我已经创建了标签的片段?
以下是我展示/隐藏/创建片段的相关代码:
c
编辑:重现这个错误很难调试。它似乎是随机发生的。
答案 0 :(得分:1)
为什么使用fragmentManager.beginTransaction().add();
隐藏和保留所有片段,您可以通过在内存中只保留一个片段并避免使用fragmentManager.beginTransaction().replace()
并使用片段生命周期方法存储来隐藏片段的麻烦来避免此错误必要时片段状态。
答案 1 :(得分:0)
以下是我解决问题的方法。在我的MainActivity中,我做到了这一点:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(null);
setContentView(R.layout.activity_main);
}
基本上发生的事情是,如果屏幕上有1个以上的片段,如果Android系统在应用程序处于后台并且关闭时资源不足,则在恢复时,MainActivity.onCreate()
将被调用它会通过调用
super.onCreate(savedInstanceState);
所以我只是将它设为null,这可以防止重新创建所有这些片段。
它们重叠的原因是因为它们都被立即显示出来。
绝对不是正确的方法,但它现在解决了我的问题= P