2016-04-20 80 views
0

我有一個Android活動,從數據庫加載信息並將信息傳遞給另一個活動。如何刷新需要從數據庫加載的Android活動?

活動兩個過程的信息,並更新數據庫,然後重新啓動活動一個是這樣的:

Intent intent = new Intent(TransActivity.this, MainActivity.class); 
TransActivity.this.startActivity(intent); 

這工作得很好,但它實際上並沒有裝載在數據庫中更新新的信息。我如何開始活動一(mainactivity)並讓它加載由活動二(TransActivity)更新的新信息?

回答

1

每當我需要做這種類型的事情,我使用Loader。裝載機是爲活動設置數據的絕佳方式,但它們並不是很好理解。

您可以使用CursorLoader,但這需要ContentProvider,我敢打賭你不想寫這其中的一個。

我會寫一個自定義AsyncTaskLoader子類,查詢數據庫,並返回一個Cursor

查看裝載機的文檔和示例應用程序,瞭解它可能對您有何幫助。

此外,不應重新啓動主要活動,您應該查看Activity方法startActivityForResult(),setResult()onActivityResult()。然後您的TransActivity可以「返回」到您的MainActivity。這是一個更好的流程。

所以一旦你有一個Loader,你MainActivity會打電話LoaderManager.createLoader()啓動加載器。

您可以使用MainActivity.startActivityForResult()來調用TransActivity

然後,一旦您的TransActivity已更新數據庫,它會調用setResult()finish()

這將調用MainActivity中的onActivityResult()覆蓋,您可以在其中調用LoaderManager.restartLoader()加載新數據。

如果您不想使用裝載機,您可以重新查詢數據庫onActivityResult(),因爲您知道TransActivity已完成更新。

1

啓動活動二這樣

Intent i = new Intent (AcitivtyOne.this,Activitytwo.class); 
startActivityForResult(i,REQUEST_CODE); 

而且在具有活性並且更新的信息傳遞結果返回給ActivityOne

Intent resultIntent = new Intent(); 
setResult(Activity.RESULT_OK, resultIntent); 
finish(); 

數據放在結果意圖以任何方式和接收onActivityResult數據在ActivityOne中,然後執行其他操作。

僅供參考,請使用此鏈接Getting a Result from an Activity

相關問題