ContentResolver.insert()没有立即反映出来?

时间:2012-08-07 15:07:50

标签: android android-contentprovider android-contentresolver

我的活动onCreate()中的以下代码段在我的应用程序的后续调用中效果很好(即cursor.moveToFirst() true ):

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()已正确执行。

但是,在第一次调用我的应用程序时,cursor.moveToFirst()会返回 false ,尽管前面有cr.insert()

为什么?

我是否需要某种“同花”或“近距离”声明?

1 个答案:

答案 0 :(得分:2)

您需要在执行插入后获取新游标,因为游标本身不会侦听数据库中的更改。

或者写下Content Observerinform更改内容。