android - 使用支持库时 LoaderManager 出错

标签 android android-loadermanager android-cursorloader

我正在尝试将我的代码从使用游标转换为使用 CursorLoaders。为了支持旧版本的 Android,我安装了支持库,而不是导入 android.content.CursorLoader,而是导入 android.support.v4.content.CursorLoader。现在编译好的代码抛出两个错误。当我实现它时,第一个错误是在 LoaderManager 上。错误是:LoaderManager 无法解析为类型。第二个错误是调用 initLoader。错误是:类型 LoaderManager 中的方法 initLoader(int, Bundle, LoaderManager.LoaderCallbacks) 不适用于参数 (int, Bundle, MyList)。这是我的代码:

public class MyList extends ListActivity implements LoaderManager.LoaderCallbacks<Cursor> {

private static final String[] PROJECTION = new String[] { "_id", "fieldname" };
private static final int LOADER_ID = 0;
private static final String MYTABLE_BASEPATH = "MyTable_tbl";
private static final String AUTHORITY = "SQLData";
public static final Uri MY_URI = Uri.parse("content://" + AUTHORITY + "/" + MYTABLE_BASEPATH);
private SimpleCursorAdapter mAdapter;

@SuppressWarnings("deprecation")
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    Intent myData = getIntent();
    Bundle info = myData.getExtras();

    if (info != null){
        Cursor c;
        String[] dataColumns = { "fieldname" };
        int[] viewIDs = { R.id.mylist1 };

        SimpleCursorAdapter adapter;            
        adapter = new SimpleCursorAdapter(this, R.layout.mylist, null, dataColumns, viewIDs, CursorAdapter.FLAG_REGISTER_CONTENT_OBSERVER);
        setListAdapter(adapter);
        getLoaderManager().initLoader(0, info, this);
    }


}

public Loader<Cursor> onCreateLoader(int id, Bundle args) {
    String selection = "level = '" + args.getString("Level") + "'";
    return new CursorLoader(this, MY_URI,
            PROJECTION, selection, null, null); 
}

public void onLoadFinished(Loader<Cursor> loader, Cursor cursor) {
    switch (loader.getId()) {
      case LOADER_ID:
        mAdapter.swapCursor(cursor);
        break;
    }

}

public void onLoaderReset(Loader<Cursor> loader) {
    mAdapter.swapCursor(null);

}

最佳答案

为了返回一个 android.support.v4.app.LoaderManager ,你需要使用 getSupportLoaderManager() . 遗憾的是,此方法不适用于 ListActivity。 这可能会帮助你: How to get LoaderManager in a ListActivity

关于android - 使用支持库时 LoaderManager 出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13038869/

相关文章:

android - 使用动态加载程序在没有 ListFragments 的 ViewPager 中加载 ListView 页面的模式?

android - 带有 LoaderManager 的多个 Loader,没有得到正确的 Loader

android - 带 LoaderManager 的 CursorLoader 如何知道将光标发送到 CursorAdapter?

java - Android Google map Api 在放大时不会取消聚类

java - FragmentTransaction : how to exchange data to former fragment

android - 对 CursorLoaders 感到困惑并将它们与自定义 SQLiteOpenHelper 一起使用

android - rxJava 和改造而不是 IntentService + CursorLoader?

Android Cursor Loader 只工作一次

android - 主机是否是 Android 深度链接所需的配置?

java - 绑定(bind)到第二个 Activity 的服务