2011-10-01 3 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

... 대신 Activity에서 상속하는 대신 FragmentActivity에서 상속합니다. –

관련 문제