现在我有一个片段可以做很长时间的事情。在某些情况下,当片段仍在运行时,活动将调用onSaveInstanceState
。碎片完成所有的事情后,我想关闭它。这将抛出异常Can not perform this action after onSaveInstanceState
。
我知道这意味着什么,但我确实需要在完成任务后关闭片段。因此,如果我使用commitAllowingStateLoss
强制关闭片段,则在重新创建活动后,将不会重新创建close state
,UI将被破坏。
那么我应该如何正确关闭片段呢?
答案 0 :(得分:1)
我不知道自动关闭片段的任何安全方法,这似乎是一个坏主意(为什么你会依赖系统呢?)。您必须在应用中正确计时。我可以给你代码建议去做。由于没有密切方法,因此您使用remove
方法或popBackStack
。由于您没有发布任何代码,我建议采用一种通用方法来实现此目的。
使用删除代码建议:
Fragment fragment = getSupportFragmentManager().findFragmentByTag(TAG_FRAGMENT);
...
FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
transaction.remove(fragment);
transaction.commit();
注意: