2012-10-05 75 views
5

更新值我有活性的,我可以導航到A->B->C->D後退按鈕按需要顯示在活動

Activity D我有一個按鈕,其中,如果user'll按下此鍵,它會去Activity A 。在這裏,我將創建一個用戶可以在此更新值的新實例。

我完成活動,它會轉到Activity D,從Activity D用戶會按Back Button
D->C->B->A
並且將來到Activity A

我需要在Activity A中顯示更新後的值,如何更新'活動A'中的值?

+1

@RobinHood會是可怕的(onResume)! –

回答

0

將此片段包含在您的D活動中。

@Override 
public void onBackPressed(){ 
    aMethodToUpdateYourActivityA(); 
    } 
2

使用Shared Preferences保存您的數據。因此,您將在所有活動中獲取數據。

0

您可以瞭解更多關於活動的生命週期,在這裏管理數據Activity

至於你的問題,你應該做的,以數據的任何更新您的onResume方法的活動A.

@Override 
public void onResume(){ 
    //Update your data here 
} 

內如果您關注的如何在它們之間傳遞數據,你應該使用Shared preferences,因爲在這麼多的活動上加載startActivityForResult並不是真的建議。 另外它是否真的有必要擁有這種層次結構?如果用戶更新數據,就會更容易,您只需startActivityA並直接將數據傳遞給它。

0

這可以通過兩種方式來完成:

  1. 使用共享偏好和存儲您的更新後的值,然後的onResume()活動A的,從相同的共享偏好閱讀並更新值。

  2. 使用startActivityForResult啓動活動,並使用intent對象收集這些值並使用setResult將它傳遞迴以前的活動。

+0

感謝您的幫助 – mohan

4

我認爲你必須使用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; 
      } 
1

如果您在更新Activity A時沒有存儲數據,我認爲最好將它們存儲在Activity A本身的靜態變量中,並將數據加載到onResume()中。

如果您有數據庫,則將數據從的數據庫中存儲到Activity A中。