我在从 ListFragment 外部调用 restartLoader() 时遇到了一些问题。该序列按照点击“添加”按钮打开一个活动 -> 输入数据 -> 点击保存,这将启动一个 AsyncTask 以将数据存储在服务器上。数据传输成功后,返回上一个 Activity -> 让 Activity 调用 ListFragment 中运行 getLoaderManager().restartLoader() 的方法。
这毫无疑问总是会创建一个“java.lang.IllegalStateException: Fragment ListsFragment{42481238} not attach 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?