微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Android片段......在片段完成处理之前使用后退按钮时崩溃,使用导航图和导航控制器

如何解决Android片段......在片段完成处理之前使用后退按钮时崩溃,使用导航图和导航控制器

我有一个大型应用程序,它使用 navgraph 和 navcontroller 在单个活动中更改片段。 (实际上有多个活动,每个活动都有多个片段,但在本讨论中,只考虑一个具有多个全屏片段的活动)。通过这个应用程序,每个片段都可以进行数据库调用以将数据显示在屏幕上,或者在单击按钮进行一些处理后进行数据库调用。在处理 getResources().getDrawable(android.R.drawable.ic_menu_send) 之类的事情时,通常需要活动或上下文。

如果有人单击片段中的按钮启动数据库读取,然后在读取完成后尝试使用 getResources() 但在片段到达 getResources() 点之前单击了设备后退按钮,则应用程序可能会崩溃)。 此时它给出了一个类似于这样的致命异常: java.lang.IllegalStateException: Fragment ReferAFriendFragment 未附加到上下文。 在 androidx.fragment.app.Fragment.requireContext(Fragment.java:805) 在 androidx.fragment.app.Fragment.getResources(Fragment.java:869)

在上面的例子中,我没有使用 viewmodel,只是在片段的 onCreateView() 中有代码

这可能发生在整个应用程序的许多不同片段中。 所以,我的问题是我们应该如何构建一个应用程序来处理这些情况? 我们是否禁用所有按钮直到所有处理完成?看起来繁琐又极端。
将主要处理放入视图模型并在片段中使用带有观察者的可变实时数据会防止崩溃吗?

在仍有处理尚未完成(并且可能有回调或观察者)的情况下,如何处理从片段导航离开的人的正确方法

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。