【发布时间】:2013-01-21 02:30:59
【问题描述】:
我想弄清楚我是否在加载程序方面做错了什么。我正在使用支持库,并且我有一个片段,它在 onCreate() 调用 initLoader() 将自身设置为 LoaderCallbacks,但是在旋转时,它在 onLoadFinished() 中收到两次结果,一次是由于调用 init (并且它已经拥有数据),并且由于 FragmentActivity 循环遍历 onStart() 中的所有加载器并传递结果,因为它已经拥有数据。
如果我只调用一次 init(在 Fragment 首次启动时),它不会将自己设置为 Loader 的回调,因此它根本不会收到对 onLoadFinished 的调用。似乎 onLoadFinished 应该只被调用一次,因为一些昂贵的事情可能会在 onLoadFinished() 中完成(例如清除列表适配器等),所以我只是想弄清楚这是一个错误还是我是只是在错误的时间调用 init 或其他什么。
有人对此问题有任何见解吗?
【问题讨论】:
-
我不确定为什么会发生这种情况,但在
onResume()中调用getLoaderManager().initLoader(0, null, this);似乎是很多人(包括我)的解决方案。见stackoverflow.com/a/14524031/1617737。 -
这是我找到的最佳答案:stackoverflow.com/a/17324776/2578070
标签: android android-fragments loader android-fragmentactivity android-loadermanager