2013-10-19 112 views
0

我想退出這是我的Android活動的生命週期內設置活動後,一些變量保存,並告訴他們,當我再次啓動活動,但我似乎並沒有設法得到的東西加工。下面是我如何做到這一點:保存變量銷燬不起作用

我創建了一個整型變量「測試」:

public class MainActivity extends Activity { 
int test = 1; 

然後我寫了一個方法,通過按下一個按鈕來改變這個varibale值:

public void changeValueTest(View view) { 
    this.test = 2; 
} 

然後我使用的onSaveInstanceState()方法來保存當前值:

static final String TEST = "test variable"; 

@Override 
public void onSaveInstanceState(Bundle savedInstanceState) { 
    savedInstanceState.putInt(TEST, this.test); 
    super.onSaveInstanceState(savedInstanceState); 
} 

然後在onCreate()方法,我把THI S碼來獲取和顯示改爲「測試」值:

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    if (savedInstanceState != null) { 
     this.test = savedInstanceState.getInt(TEST); 
     TextView textView1 = (TextView)findViewById(R.id.textView1); 
     textView1.setText("Current test value is: " + test); 
    } 
} 

於是我打開應用程序,按下按鈕,以「測試」值從1更改爲2,然後退出應用程序,等到它是正確的(當應用程序管理器沒有在「緩存進程」窗口中顯示它時),再次啓動應用程序,textView1視圖顯示1而不是2.我做錯了什麼?請幫忙!謝謝!

+1

嘗試存儲在SharedPreferences代替InstanceState值。 InstanceState在應用程序被破壞時並不真正保存,但SharedPrefernces可以! –

+0

謝謝!我會盡力。 – Salivan

+0

如果你使用'onDestroy()',如果可能不會做你認爲它做的事。檢查文檔。 – Simon

回答

1

我在做什麼錯?

什麼都沒有。實例狀態不涵蓋您描述的場景。

晴,實例狀態被配置改變(例如,畫面旋轉)使用。其次,如果用戶通過「退出」(我假定您指的是BACK)以外的方式離開您的應用程序並通過類似最近任務列表的方式返回給您,則會使用實例狀態。

+0

謝謝你明確的解釋。我嘗試使用SharedPreferences,如A.S.說過。感謝你們! – Salivan