2

我的活动的以下代码片段在我的应用程序的后续调用中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()前面有它。

为什么?

我需要某种“刷新”或“关闭”声明吗?

4

1 回答 1

2

插入后您需要获取一个新游标,因为游标本身不会监听数据库中的更改。

或者编写一个Content Observer并将更改通知它。

于 2012-08-07T15:15:38.410 回答