簡體   English   中英

在第二個活動通過ContentProvider插入數據庫后,第一個活動的列表視圖未更新; onLoadFinished不被調用

[英]1st Activity's listview not updated after 2nd activity inserts into database via ContentProvider; onLoadFinished not called

問題:從第二個活動返回時,第一個活動的列表視圖無法反映第二個活動對數據庫所做的更改。 如果我對代碼進行了微不足道的更改(使模擬器滿意)並重新啟動應用程序,則listview現在可以准確顯示數據庫在上一個會話期間所做的第二次活動更改。

該應用程序的勇氣:

MainActivity: extends Activity implements LoaderManager.LoaderCallbacks<Cursor>
=>onCreate: SimpleCursorAdapter set; getLoaderManager().initLoader(LOADER_ID, null, this)
=>onResume: super.onResume(); getLoaderManager().restartLoader(0, null, this)

...哦,我的天哪! 有一個問題:initLoader和restartLoader使用不同的加載器ID。

最近五個小時讓我感到難過。 為什么我要離開這個問題:在嘗試解決我的問題時,我沒有遇到這個答案(也許這太笨拙,無法建議某人尋找),但是對於下一個以這種獨特方式絆倒的人,這是一個潛在的答案。

確保initLoader和restartLoader中的LoaderManager ID相同。

除了Alex和CommonsWare撰寫的所有其他文章,以及在尋找無法更新列表視圖的解決方案時遇到的所有其他文章,這可能是您發生的其他事情。

在搜索可能出了什么問題的過程中,我還指出我沒有實現:cursor.setNotificationUri(getContext()。getContentResolver(),uri);

即使應用程序處於非活動狀態,CursorLoader如何自動更新視圖?

...我正在遵循的兩個有關如何實現內容提供程序的教程在其提供程序的查詢方法中沒有setContentNotificationUri; 盡管他們使用了querybuilder,但我沒有使用(也許setContentNotificationUri包含在queryBuilder中?快速研究並未發現是這種情況)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM