首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >LoaderManager的作用域是什么?

LoaderManager的作用域是什么?
EN

Stack Overflow用户
提问于 2011-09-07 04:20:21
回答 1查看 2.4K关注 0票数 16

在识别LoaderManager中的加载器时,请使用唯一的ids。我问的是这些I必须有多独特。

每个活动和片段都有自己的LoaderManager吗?片段是否使用它们所附加的活动的LoaderManager?应用程序是否只拥有一个LoaderManager?

加分,如果你能告诉我如何改变你正在使用的LoaderManager是可能的。如果我希望我的活动中的每个片段都使用相同的LoaderManager (其中一些片段拉取相同的数据并共享Loaders会更好),这可能吗?

EN

回答 1

Stack Overflow用户

发布于 2015-01-06 13:47:57

是。这对我很管用。我在导航抽屉中有3个不同的片段,其中相同的数据填充在不同的ListViews中。(所有片段都是同一活动的一部分)。

我的AsyncTaskLoader:

public class MyTaskLoader extends AsyncTaskLoader<HashMap<String, Integer>> {

public MyTaskLoader(Context context) {
    super(context);
}

@Override
public HashMap<String, Integer> loadInBackground() {
...
return hashMap;
}

...
}

在所有片段中使用相同的Loader Id。

Fragment1:

public class Fragment1 extends BaseFragment implements LoaderManager.LoaderCallbacks<HashMap<String, Integer>> {
@Override
public void onCreate(Bundle savedInstanceState) {

//initialize adapter

getActivity().getSupportLoaderManager().initLoader(0, null, this);

}

@Override
public Loader<HashMap<String, Integer>> onCreateLoader(int arg0, Bundle arg1) {
    // TODO Auto-generated method stub

    return new MyTaskLoader(getActivity());
}

@Override
public void onLoadFinished(Loader<HashMap<String, Integer>> arg0,
        HashMap<String, Integer> data) {
    // TODO Auto-generated method stub

    listAdapter.setData(data.keySet());

}

@Override
public void onLoaderReset(Loader<HashMap<String, Integer>> arg0) {
    // TODO Auto-generated method stub

    listAdapter.setData(null);
}
}

对Fragment2使用相同的Id:

public class Fragment2 extends BaseFragment implements LoaderManager.LoaderCallbacks<HashMap<String, Integer>> {
@Override
public void onCreate(Bundle savedInstanceState) {

//initialize adapter

getActivity().getSupportLoaderManager().initLoader(0, null, this);

}

@Override
public Loader<HashMap<String, Integer>> onCreateLoader(int arg0, Bundle arg1) {
    // TODO Auto-generated method stub

    return new MyTaskLoader(getActivity());
}

@Override
public void onLoadFinished(Loader<HashMap<String, Integer>> arg0,
        HashMap<String, Integer> data) {
    // TODO Auto-generated method stub

    listAdapter.setData(data.keySet());

}

@Override
public void onLoaderReset(Loader<HashMap<String, Integer>> arg0) {
    // TODO Auto-generated method stub

    listAdapter.setData(null);
}
}

应该在初始化加载器之前初始化适配器。到目前为止还行得通。但是,这是正确的方式吗?有没有更好的方法来使用多个片段的通用加载器?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7325668

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档