更新值我有活性的,我可以導航到A->B->C->D
後退按鈕按需要顯示在活動
在Activity D
我有一個按鈕,其中,如果user'll按下此鍵,它會去Activity A
。在這裏,我將創建一個用戶可以在此更新值的新實例。
我完成活動,它會轉到Activity D
,從Activity D
用戶會按Back Button
並且將來到
D->C->B->AActivity A
。
我需要在Activity A
中顯示更新後的值,如何更新'活動A'中的值?
更新值我有活性的,我可以導航到A->B->C->D
後退按鈕按需要顯示在活動
在Activity D
我有一個按鈕,其中,如果user'll按下此鍵,它會去Activity A
。在這裏,我將創建一個用戶可以在此更新值的新實例。
我完成活動,它會轉到Activity D
,從Activity D
用戶會按Back Button
並且將來到
D->C->B->AActivity A
。
我需要在Activity A
中顯示更新後的值,如何更新'活動A'中的值?
你會希望有一大堆的startActivityForResult()
S和基本連鎖它們d回A.
在這裏看到:How can I pass values between Activities on Android?
或者,你可以存儲的值作爲SharedPreferences
,稍後再查看,一旦你回到原來的活動。
將此片段包含在您的D活動中。
@Override
public void onBackPressed(){
aMethodToUpdateYourActivityA();
}
使用Shared Preferences
保存您的數據。因此,您將在所有活動中獲取數據。
您可以瞭解更多關於活動的生命週期,在這裏管理數據Activity
至於你的問題,你應該做的,以數據的任何更新您的onResume方法的活動A.
@Override
public void onResume(){
//Update your data here
}
內如果您關注的如何在它們之間傳遞數據,你應該使用Shared preferences,因爲在這麼多的活動上加載startActivityForResult並不是真的建議。 另外它是否真的有必要擁有這種層次結構?如果用戶更新數據,就會更容易,您只需startActivityA並直接將數據傳遞給它。
這可以通過兩種方式來完成:
使用共享偏好和存儲您的更新後的值,然後的onResume()活動A的,從相同的共享偏好閱讀並更新值。
使用startActivityForResult啓動活動,並使用intent對象收集這些值並使用setResult將它傳遞迴以前的活動。
感謝您的幫助 – mohan
我認爲你必須使用SharedPreference保持你的背部按鈕的點擊數據,或使用靜態變量。
// ------------------要存儲數據的------------------
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putInt("key", countValue);
editor.commit();
// ---------------------獲取數據------------------
if ((keyCode == KeyEvent.KEYCODE_BACK)) {
Intent home=new Intent(PersentActivity.this,DesiredActivity.class);
sharedPreferences = getSharedPreferences("MY_SHARED_PREF", MODE_PRIVATE);
int countValue = sharedPreferences.getInt("key", 0);
startActivity(home);
return true;
}
如果您在更新Activity A
時沒有存儲數據,我認爲最好將它們存儲在Activity A
本身的靜態變量中,並將數據加載到onResume()
中。
如果您有數據庫,則將數據從的數據庫中存儲到Activity A
中。
@RobinHood會是可怕的(onResume)! –