2011-10-01 18 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继承。 –