我正在尝试创建一个基本活动来从我的内容提供程序中检索数据。我将在几个活动中检索相同的数据。这是我到目前为止所做的事情,但我遇到了一个问题:
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方法中初始化加载器。
答案 0 :(得分:0)
声明MainActivity
也实施LoaderCallbacks
:
public class MyActivity extends BaseActivity implements LoaderManager.LoaderCallbacks<Cursor> {
...
}
无需自行添加方法 - 将调用BaseActivity
中的方法。
此设置允许您在扩展BaseActivity
(不同类型=不同loaderId
参数)的活动中使用不同类型的加载器,同时将LoaderCallbacks
方法保留在{{1本身。