gpt4 book ai didi

android - FragmentActivity 中的 Fragment 中的 RestartLoader

转载 作者:搜寻专家 更新时间:2023-11-01 09:06:24 28 4
gpt4 key购买 nike

我在从 ListFragment 外部调用 restartLoader() 时遇到一点问题。该序列根据点击“添加”按钮打开一个 Activity -> 输入数据 -> 点击保存,这将启动一个 AsyncTask 以将数据存储在服务器上。数据传输成功后,返回到之前的 Activity -> 让 Activity 调用 ListFragment 中运行 getLoaderManager().restartLoader() 的方法。

这总是会产生“java.lang.IllegalStateException: Fragment ListsFragment{42481238} not attached to Activity”错误。如果我将 restartLoader() 移动到 onResume,它会稍微好一些,但我有其他按钮可以直接修改连接到 ListFragments 的数据,无论如何它仍然会触发 IllegalStateException。

从 logcat 中摘录错误信息

E/AndroidRuntime(29594): java.lang.IllegalStateException: Fragment ListsFragment{42450b18} not attached to Activity
E/AndroidRuntime(29594): at android.support.v4.app.Fragment.getLoaderManager(Fragment.java:768)
E/AndroidRuntime(29594): at testpager.ListsFragment.resetList(ListsFragment.java:122)

我错过了什么?如何在不触发此异常的情况下从 FragmentActivity 刷新 ListFragment?

最佳答案

你不应该刷新你的 ListFragment来自 FragmentActivity ...这违背了 Fragment 的基本设计指南。 s(应该是为重用而设计的,不与任何一项特定 Activity 相关联)和 LoaderManager (应该属于单个 ActivityFragment )。你应该有你的 ListFragment实现LoaderManager.LoaderCallbacks<D>接口(interface)。

在单独的注释中,Loader s 应该在其基础数据源发生更改时收到通知,通知它们执行新的异步加载并将结果返回给回调的 onLoadFinished。方法。如果一定要靠restartLoader获取最新数据,那么你做错了什么(即你的 ContentObserver 没有收到通知 Loader 重新查询其数据的变化)。

关于android - FragmentActivity 中的 Fragment 中的 RestartLoader,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11587310/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com