1

我想为我的 android 应用程序使用 ListFragment 和 Loader 类。(蜂窝级SDK,但谷歌发布可比包)

在 Fragment 中,它是否具有使用 Fragmemt 生命周期管理游标 API

活动有“ startManagingCursor(Cursor c)

或者

Fragment 在其生命周期中自动管理游标?

4

1 回答 1

2

我不确定我的问题是否正确,但是如果您问的是在使用 Loader 时您的光标是否在 ListFragment 中自动管理,那么我相信答案是:是的,是的。

在您的 ListFragment 中,您将实现 LoaderManager.LoaderCallbacks 接口,然后使用 LoaderManager 中的 initLoader() 和 restartLoader() 在 ListFragment 的生命周期内管理您的数据和游标。底层适配器必须支持 swapCursor() 方法才能使其发挥最佳效果。

类似于以下内容:


class Foo extends ListFragment implements LoaderManager.LoaderCallbacks {

    private MyAdapter   mAdapter;

    @Override
    public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        mAdapter = new MyAdapter();
        getLoaderManager().initLoader(0, null, this);
    }

    @Override
    public Loader onCreateLoader(int id, Bundle args) {
        Uri MY_URI = "your data URI goes here";
        return new CursorLoader(getActivity(), MY_URI, MY_PROJECTION, selection, selectionArgs, sortOrder);
    }

    @Override
    public void onLoadFinished(Loader loader, Cursor data) {
        mAdapter.swapCursor(data);
    }

    @Override
    public void onLoaderReset(Loader loader) {
        mAdapter.swapCursor(null);
    }
}
于 2011-07-20T15:20:50.680 回答