[英]Android save state on orientation change
我有一個Android應用程序,該應用程序維護有關行進距離,經過時間等的狀態。當用戶更改屏幕時,當Android調用onDestroy()時,我可以方便地將該狀態存儲在對象中,並將對該對象的引用存儲在Bundle中方向,然后在onCreate(Bundle savedBundle)中恢復狀態。 但是,我在屏幕上的Buttons和EditText對象中也有一些狀態,我想通過屏幕方向保持該狀態。 例如,在onStart(Bundle savedBundle)中,我調用:
_timerButton.setBackgroundColor(Color.GREEN);
_pauseButton.setBackgroundColor(Color.YELLOW);
_pauseButton.setEnabled(false);
然后,在我的應用程序的整個操作過程中,這些按鈕的顏色/啟用狀態將被更改。 是否有更方便的方法來持久保存用戶界面項(EditText,Button對象等)的狀態,而不必手動保存/恢復每個按鈕的每個屬性? 必須在屏幕方向之間手動管理這種狀態真的很笨拙。
謝謝你的幫助。
要保存變量或值,應使用onSaveInstanceState(Bundle);。 並且當方向更改時,應該恢復的值也應該使用onRestoreInstanceState(),但不是很常見。 ( onRestoreInstanceState()在onStart()之后調用,而onCreate()在onStart()之前調用 。使用put方法將值存儲在onSaveInstanceState()中。
protected void onSaveInstanceState(Bundle icicle) {
super.onSaveInstanceState(icicle);
icicle.putLong("param", value);
}
並恢復onCreate()中的值:
public void onCreate(Bundle icicle) {
if (icicle != null){
value = icicle.getLong("param");
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.