1

從我的活動的onCreate()的偉大工程下面的代碼片段(即cursor.moveToFirst())在我的應用程序的後續調用:ContentResolver.insert()不立即反映?

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()回報,儘管cr.insert()它前面。

爲什麼?

我需要某種「清除」或「關閉」語句嗎?

+2

你如何創建光標? – 2012-08-07 15:11:41

+0

@豬肉是的,但在* insert()之前*。見下面的答案。 – ateiob 2012-08-07 15:29:59

回答

2

您需要在插入後獲取新的遊標,因爲遊標本身不會偵聽db中的更改。

或寫一個Content Observerinform它的變化。

+0

就是這樣。謝謝! – ateiob 2012-08-07 15:29:05