小编jgi*_*les的帖子

Loader将结果传递给错误的片段

基于android开发人员示例,我有一个使用ActionBar选项卡滑动选项卡的活动.

每个选项卡显示一个片段,每个片段(实际上,SherlockFragment)通过自定义AsyncTaskLoader加载不同类型的远程api请求.

问题是,如果您点击一个标签移动2个标签/页面,而您要离开的标签的片段(旧片段)正在加载结果,则该结果将传递到您移动到的标签的片段(新片段).在我的情况下,这会导致ClassCastException,因为预期的结果是不兼容的类型.

在代码中,情况的要点是:

装载机:

public class FooLoader extends AsyncTaskLoader<Foo>
public class BarLoader extends AsyncTaskLoader<Bar>
Run Code Online (Sandbox Code Playgroud)

片段:

public class FooFragment extends Fragment implements LoaderManager.LoaderCallbacks<Foo> {
...
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        getLoaderManager().initLoader(0, null, this);
    }
    public Loader<Foo> onCreateLoader(int id, Bundle args) { return new FooLoader(); }
...
}
public class BarFragment extends Fragment implements LoaderManager.LoaderCallbacks<Bar> {
    ...
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        getLoaderManager().initLoader(0, null, this);
    }
    public Loader<Bar> onCreateLoader(int id, Bundle args) { return new …
Run Code Online (Sandbox Code Playgroud)

android android-fragments android-viewpager android-loadermanager android-loader

13
推荐指数
2
解决办法
2964
查看次数