2

私のアクティビティからの次のコードスニペットは、その後のアプリケーションの呼び出しでonCreate()うまく機能します(つまりtrueです)。cursor.moveToFirst()

ContentValues values = new ContentValues();
values.put(MyProvider.Notes.TITLE, "title");
values.put(MyProvider.Notes.NOTE, "note");
ContentResolver cr = getContentResolver();
Uri newlyInsertedRecord = cr.insert(notesUri, values);

if (cursor.moveToFirst()) {
    int id = cursor.getInt(0);
    String ttl = cursor.getString(1);
    String nte = cursor.getString(2);
    Log.i(TAG, id + ", "+ ttl + ", "+ nte);
}
else
    Log.e(TAG, "Why isn't the insert reflected immediately?");

だから、私は確かにが正しく実行されていることを知っています。cr.insert()

しかし、私のアプリケーションを最初に呼び出すと、その前にあるにもかかわらず、falsecursor.moveToFirst()が返されます。cr.insert()

なんで?

ある種の「フラッシュ」または「クローズ」ステートメントが必要ですか?

4

1 に答える 1

2

カーソル自体はデータベース内の変更をリッスンしないため、挿入を行った後に新しいカーソルを取得する必要があります。

または、コンテンツオブザーバーを作成して、変更を通知します。

于 2012-08-07T15:15:38.410 に答える