我试图找出如何在Android 3.0中使用Loaders ,但似乎无法得到它的工作。 文档只描述使用CursorLoader但我使用AsyncTaskLoader 。 从文档看来,你应该只需要实现AsyncTaskLoader.loadInBackground()但是它在getLoaderManager().initLoader()之后永远不会被调用,然后在callback中创build加载器。 我可以看到debugging消息说Created new loader LoaderInfo{4040a828 #0 : ArticleDataLoader{4036b350}}所以它看起来像它被成功创build。 目前SDK中的加载器是否可能被破坏,或者在创build加载器后需要调用某些方法? (他们没有在CursorLoader例子中做到这一点)。 编辑:好像调用forceLoad()返回的加载程序上的initLoader()开始加载至less,但这意味着你不能正确处理旋转:(
对于我来说,如果你有多个Loader,不知道如何获得正确的光标。 比方说,你定义两个不同的装载机: getLoaderManager().initLoader(0,null,this); getLoaderManager().initLoader(1,null,this); 然后在onCreateLoader()你做不同的事情取决于id: @Override public Loader<Cursor> onCreateLoader(int id, Bundle arg1) { if (id==0){ CursorLoader loader = new CursorLoader(getActivity(), MaterialContentProvider.CONTENT_URI,null,null,null,null); }else{ CursorLoader loader = new CursorLoader(getActivity(), CustomerContentProvider.CONTENT_URI,null,null,null,null); }; return loader; } 到现在为止还挺好。 但是如何在onLoadFinished()中获得正确的游标,因为你没有得到任何id来为正确的Cursoradapter标识正确的游标。 @Override public void onLoadFinished(Loader<Cursor> arg0, Cursor cursor) { mycursoradapter1.swapCursor(cursor); if(isResumed()){ setListShown(true); }else { setListShownNoAnimation(true); } } //and where to get the […]