Android 通过扩展活动使用相同的游标加载程序
我正在尝试创建一个基本活动,用它从我的内容提供商检索数据。我将在几个活动中检索相同的数据。到目前为止,我一直在尝试这样做,但我有一个问题:Android 通过扩展活动使用相同的游标加载程序,android,android-studio,android-cursorloader,Android,Android Studio,Android Cursorloader,我正在尝试创建一个基本活动,用它从我的内容提供商检索数据。我将在几个活动中检索相同的数据。到目前为止,我一直在尝试这样做,但我有一个问题: public class BaseActivity extends ActionBarActivity implements LoaderManager.LoaderCallbacks<Cursor>{ @Override public Loader<Cursor> onCreateLoader(in
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) {
}
}
我的问题是,在MyActivity中,这个
没有被识别为LoaderCallback
对象。如果我在BaseActivity中使用相同的行,它将被视为。如何将该此初始化为一个
编辑:我不在OnCreate方法中初始化加载程序。声明MainActivity
也实现LoaderCallbacks
:
public class MyActivity extends BaseActivity implements LoaderManager.LoaderCallbacks<Cursor> {
...
}
公共类MyActivity扩展BaseActivity实现LoaderManager.LoaderCallbacks{
...
}
无需添加方法本身-将调用在BaseActivity
中获得的方法
此设置将允许您在扩展BaseActivity
(不同类型=不同的loaderId
参数)的活动中使用不同类型的加载程序,将LoaderCallbacks
方法保留在BaseActivity
本身中。声明MainActivity
还实现了LoaderCallbacks
:
public class MyActivity extends BaseActivity implements LoaderManager.LoaderCallbacks<Cursor> {
...
}
公共类MyActivity扩展BaseActivity实现LoaderManager.LoaderCallbacks{
...
}
无需添加方法本身-将调用在BaseActivity
中获得的方法
此设置将允许您在扩展BaseActivity
的活动中使用不同类型的加载程序(不同类型=不同的loaderId
参数),同时将LoaderCallbacks
方法保留在BaseActivity
本身中。问题是我调用了getLoaderManager().initLoader(1,null,this)代码>从一个方法发送到服务器,它检测到这个
是其他东西,如果我从OnCreate调用它就可以了。我会照你说的做,从基本活动调用initLoader。@BogdanDaniel,我不是说你应该从BaseActivity
调用initLoader()
——你可以从扩展基本活动的不同loaderId
调用它,在BaseActivity
中处理不同类型的加载程序时,问题是我调用了getLoaderManager().initLoader(1,null,this)代码>从一个方法发送到服务器,它检测到这个
是其他东西,如果我从OnCreate调用它就可以了。我会照你说的做,从基本活动调用initLoader。@BogdanDaniel,我不是说你应该从BaseActivity
调用initLoader()
——你可以从扩展基本活动的不同loaderId
调用它,在BaseActivity
中处理不同类型的加载程序时,问题是我调用了getLoaderManager().initLoader(1,null,this)代码>从一个方法发送到服务器,它检测到这个
是其他东西,如果我从OnCreate调用它就可以了。我会照你说的做,从基本活动调用initLoader。@BogdanDaniel,我不是说你应该从BaseActivity
调用initLoader()
——你可以从扩展基本活动的不同loaderId
调用它,在BaseActivity
中处理不同类型的装载机时。