0

データベースの列の 1 つから 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;
    }

デシベル。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;
    }

DBヘルパー

    private static class DatabaseHelper extends SQLiteOpenHelper {
    DatabaseHelper(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
    }

または、データベースからフラグメントのリストビューを作成するためのより良い方法がある場合は? 前もって感謝します :)

4

4 に答える 4

1

逆にしてませんか?

db.open();
db = new NotesDatabase(getActivity());
于 2013-07-23T18:46:42.563 に答える
0

new の前に db.open を実行しているため、まだ存在していません。null db を開こうとしています。

于 2013-07-23T18:51:47.363 に答える
0

データベースヘルパーを開く前に初期化するだけです: db = new DatabaseHelper(this);

于 2013-07-23T18:47:00.047 に答える