通过扩展活动来使用相同的CursorLoader

时间:2015-06-07 19:34:32

标签: android android-studio android-cursorloader

我正在尝试创建一个基本活动来从我的内容提供程序中检索数据。我将在几个活动中检索相同的数据。这是我到目前为止所做的事情,但我遇到了一个问题:

public class BaseActivity extends ActionBarActivity implements
        LoaderManager.LoaderCallbacks<Cursor>{

    @Override
    public Loader<Cursor> onCreateLoader(int id, Bundle args) {
        String[] projection =
                {
                        ActivitiesTable.KEY_EMAIL,
                        ActivitiesTable.KEY_ABOUT

                };
        CursorLoader cursorLoader = new CursorLoader(this, ContentProvider.ACTIVITIES_URI, projection,
                null, null, null);
        return cursorLoader;
    }

    @Override
    public void onLoadFinished(android.content.Loader<Cursor> loader, Cursor cursor) {
        Log.v("Cursor Object", DatabaseUtils.dumpCursorToString(cursor));
    }

    @Override
    public void onLoaderReset(android.content.Loader<Cursor> loader) {

    }

}

我试图像这样使用它:

public class MyActivity extends BaseActivity{
...
getLoaderManager().initLoader(1, null, this);
...
} 

我的问题是,在MyActivity中,this并未被识别为LoaderCallback个对象。如果我在BaseActivity中使用相同的行,它将被视为。如何将this初始化为一个?

编辑:我没有在OnCreate方法中初始化加载器。

1 个答案:

答案 0 :(得分:0)

声明MainActivity也实施LoaderCallbacks

public class MyActivity extends BaseActivity implements LoaderManager.LoaderCallbacks<Cursor> {
...
}

无需自行添加方法 - 将调用BaseActivity中的方法。

此设置允许您在扩展BaseActivity(不同类型=不同loaderId参数)的活动中使用不同类型的加载器,同时将LoaderCallbacks方法保留在{{1本身。