vur*_*rp0 64 sqlite android android-listfragment android-loadermanager
我在遵循Android中使用SQLite 的指南时遇到了麻烦.我正在使用a ListFragment
而不是ListActivity
(如示例中所示),所以我使用了ListFragment
工具LoaderManager.LoaderCallbacks<Cursor>
.然后,在以下fillData()
方法中ListFragment
:
private void fillData() {
// Fields from the database (projection)
// Must include the _id column for the adapter to work
String[] from = new String[] { NotesSQLiteHelper.COLUMN_TITLE };
// Fields on the UI to which we map
int[] to = new int[] { R.id.label };
getLoaderManager().initLoader(0, null, this); //error
adapter = new SimpleCursorAdapter(getApplicationContext(), R.layout.notes_row, null, from, to, 0);
setListAdapter(adapter);
}
Run Code Online (Sandbox Code Playgroud)
我收到错误:
The method initLoader(int, Bundle, LoaderManager.LoaderCallbacks<D>) in the type LoaderManager is not applicable for the arguments (int, null, NotesActivity.ArrayListFragment)
Run Code Online (Sandbox Code Playgroud)
在标记的行上即使this
实现LoaderManager.LoaderCallbacks<Cursor>
.
谢谢你的任何想法.
Mat*_*s B 83
您没有使用权的实现 CursorLoader
和Loader
.删除旧的导入并使用这些导入:
import android.support.v4.app.LoaderManager;
import android.support.v4.content.CursorLoader;
import android.support.v4.content.Loader;
import android.support.v4.widget.CursorAdapter;
Run Code Online (Sandbox Code Playgroud)
但是我使用SherlockActionBar有同样的问题:因为我必须扩展,SherlockListActivity
所以没有方法getSupportLoadManager()
.
有什么想法吗?
编辑:如果您不知道如何使用片段,请按照本教程.使用扩展SherlockFragment创建一个新类,并在那里移动您的显示逻辑.让您的旧活动扩展SherlockFragmentActivity并显示新创建的SherlockFragment.这样我就搞定了.感谢@JakeWharton!
小智 59
需要注意的一些事项(根据我最近与此斗争的经验):
如果您的minSDK设置为小于11(即Gingerbread的10级)并且您使用支持包以实现向后兼容性,请确保使用
getSupportLoaderManager().initLoader(LOADER_ID, null, this);
Run Code Online (Sandbox Code Playgroud)当你说你正在使用ListFragment时,你提到了这一点,但它需要重复:不要扩展Activity,否则支持包将不起作用.相反,扩展FragmentActivity类或ListFragment类.
对于您的导入,如果您的minSDK <11,请确保使用正确的版本:
android.support.v4.app.FragmentActivity;
android.support.v4.app.LoaderManager;
android.support.v4.content.Loader;
Run Code Online (Sandbox Code Playgroud)希望这可以帮助你......或者至少是其他人......
Dex*_*ter 10
在我的情况下,转换第三个参数解决了问题:
从
getLoaderManager().initLoader(0, null, this);
Run Code Online (Sandbox Code Playgroud)
至
getLoaderManager().initLoader(0, null, (android.app.LoaderManager.LoaderCallbacks<Cursor>) this);
Run Code Online (Sandbox Code Playgroud)
注意:
(android.support.v4.app.LoaderManager.LoaderCallbacks<Cursor>) this)
不工作.getSupportLoaderManager() or getSupportLoadManager()
不工作. 归档时间: |
|
查看次数: |
49062 次 |
最近记录: |