2011-10-01 10 views
9

ListActivityでLoaderを実装したいが、アクティビティがgetLoaderManagerを認識しない。ListActivityのgetLoaderManager

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


    dbHelper = new DBHelper(this,DBNAME,FindPackageName(), TABLE_NAME); 

    sql = dbHelper.getReadableDataBase(); 
    //Log.d("Gaurav","Database Open"); 
    String[] from = new String[]{"word","_id","MyList"}; 
    int[] to = new int[]{R.id.listrow }; 

    simpleCursorLoader = new SimpleCursorLoader(this, TABLE_NAME, from, null, null, null, null, null, null, sql); 



    //query result will be whole database 
    //cursor = sql.query(TABLE_NAME, from, null, null, null, null, null); 
    //startManagingCursor(cursor); //this method is deprecated 
    //Log.d(TAG,"Cursor Set"); 



    completerOrMyListAdapter = new CompleteOrMyListAdapter(this, 
      R.layout.completeormylist_adapter, cursor, from, to, dbHelper); 
    setListAdapter(completerOrMyListAdapter); 

    // Prepare the loader. Either re-connect with an existing one, 
    // or start a new one. 
    LoaderManager lm = getLoaderManager(); 
    //if (lm.getLoader(0) != null) { 
    // lm.initLoader(0, null, this); 
    //} 
    //getLoaderManager().initLoader(0, null, this); 
} 

答えて

19

アプリがAPIレベル11以上で実行される場合は、ビルドターゲットを適切に設定すると、そのメソッドが利用可能になります。

ただし、API互換性レベル11より前にローダーをサポートするためにAndroid互換性ライブラリを使用している場合は、ListActivityを使用することはできません。 FragmentActivityから継承する必要があります。 ListFragmentを使用するか、あなた自身を管理する単純なListViewを使用してください。

+0

を使用している場合、私は私のコードで答えをしようと、それが答えで提案ように動作します

getSupportLoaderManager().initLoader(0, null, this); 

代わりに下記の使用と思います。 –

+0

[Androidデベロッパーのウェブサイト](http://developer.android.com/sdk/compatibility-library.html#Using)では、サポートパッケージ(以前の互換性ライブラリ)の使用方法や、そのライブラリは近似した新しいライブラリとは異なります。サポートパッケージのAPIドキュメントにリンクをチェックアウトすることもできます。 – hotshot309

11

私はあなたがおそらくあなたがサポートv4のパッケージ

+4

...アクティビティから継承する代わりに、代わりにFragmentActivityを継承します。 –