7

コードをカーソルの使用からCursorLoaderの使用に変換しようとしています。古いバージョンのAndroidをサポートするために、サポートライブラリをインストールし、android.content.CursorLoaderをインポートする代わりに、android.support.v4.content.CursorLoaderをインポートしています。現在、正常にコンパイルされたコードは2つのエラーをスローしています。最初のエラーは、実装時にLoaderManagerにあります。エラーは次のとおりです。LoaderManagerをタイプに解決できません。2番目のエラーは、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);

}

}

4

2 に答える 2

18

を返すには、 getSupportLoaderManager()android.support.v4.app.LoaderManagerを使用する必要があります。残念ながら、この方法はでは利用できません。これはあなたを助けるかもしれません: ListActivityでLoaderManagerを取得する方法ListActivity

于 2012-10-23T21:49:10.647 に答える
1

LoaderManagerをタイプに解決できません。インポートを追加して解決できます:

import android.support.v4.app.LoaderManager;

マルセロが指摘するように、getSupportLoaderManager()代わりに使用するgetLoaderManager()

于 2014-11-26T17:06:59.470 に答える