我正在尝试从我的数据库中的一个列填充ListFragment。 为此,我正在尝试使用
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
db.open();
db = new NotesDatabase(getActivity());
c = db.getAllRows();
getActivity().startManagingCursor(c);
String[] fromField = new String[] { NotesDatabase.KEY_TITLE };
int[] toView = new int[] { R.id.item_title };
SimpleCursorAdapter myCAdapter = new SimpleCursorAdapter(getActivity(),
R.layout.list_item, c, fromField, toView, 0);
setListAdapter(myCAdapter);
}
但我不知道为什么我在db.open()上得到NullPointerException;和c = db.getAllRows();
db.open()
public NotesDatabase open() {
db = myDBHelper.getWritableDatabase();
return this;
}
db.getAllRows();
public Cursor getAllRows() {
String where = null;
Cursor c = db.query(true, DATABASE_TABLE, ALL_KEYS, where, null, null,
null, null, null);
if (c != null) {
c.moveToFirst();
}
return c;
}
DBHelper
private static class DatabaseHelper extends SQLiteOpenHelper {
DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
或者是否有更好的方法来填充数据库中片段的列表视图? 在此先感谢:)
答案 0 :(得分:1)
你不是在逆转吗?
db.open();
db = new NotesDatabase(getActivity());
答案 1 :(得分:1)
db.open();
db = new NotesDatabase(getActivity());
c = db.getAllRows();
从逻辑上讲。先创建它。然后打开。然后获取所有行。所以swithc第1行和孤独2。
另一件事是,我假设你在myDBHelper上获得了NPE,因为你从未创建过那个帮助器。
答案 2 :(得分:0)
在打开数据库之前初始化它: db = new DatabaseHelper(this);
答案 3 :(得分:0)
你在新的之前做db.open所以它还不存在,你正试图打开一个空数据库。