sax*_*sen 1 sqlite android cursor loader mismatch
我正在使用SQLite数据库并希望在不使用的情况下加载它ContentProvider.
我无法使用我的子类SimpleCursorLoader(从没有ContentProvider的CursorLoader使用中获取)来使用LoaderManager.
在覆盖的方法
@Override
public Loader<Cursor> onCreateLoader(int ID, Bundle args) {
return new ListCursorLoader(this, dBHelper);
}
Run Code Online (Sandbox Code Playgroud)
我得到一个类型不匹配,说它无法转换ListCursorLoader为Loader<Cursor>.我已尝试动态创建ListCursorLoader(即在方法中),但这也不起作用.
这是我的代码ListCursorLoader:
package utilities;
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
public class ListCursorLoader extends SimpleCursorLoader {
private DBAdapter dBAdapter;
public ListCursorLoader(Context context, DBAdapter adapter) {
super(context);
dBAdapter = adapter;
}
@Override
public Cursor loadInBackground() {
Cursor cursor = null;
dBAdapter.open();
try {
cursor = dBAdapter.getAllQueries();
} catch (SQLException e) {
e.printStackTrace();
}
if (cursor != null) {
cursor.getCount();
}
return cursor;
}
}
Run Code Online (Sandbox Code Playgroud)
你可以看到我只覆盖了这个loadInBackground()方法,我根本看不出我做错了什么.
希望你们能帮忙!
我只是尝试了你的代码,它没有问题.
你应该仔细检查你的进口.您链接的SimpleCursorLoader正在使用支持库.您没有提供代码,但我认为您可能正在使用默认的LoaderManager,而不是支持库提供的.
因此,为了能够使用此类,您需要android.support.v4.content.Loader使用SupportLoaderManager片段中的引用并加载它.
以下是我的Fragment中的代码:(请注意支持库的使用.)
import android.database.Cursor;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.LoaderManager.LoaderCallbacks;
import android.support.v4.content.Loader;
...
public class MainActivity extends FragmentActivity implements LoaderCallbacks<Cursor>{
...
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
this.getSupportLoaderManager().initLoader(0, null, this);
}
...
@Override
public Loader<Cursor> onCreateLoader(int arg0, Bundle arg1) {
return new ListCursorLoader(this);
}
...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3659 次 |
| 最近记录: |