我有一个 Android 应用程序,它维护有关行驶距离、经过时间等的状态。当 Android 调用 onDestroy() 时,当用户更改屏幕方向,然后恢复 onCreate(Bundle savingBundle) 中的状态。但是,我在屏幕上的 Buttons 和 EditText 对象中也有一些状态,我希望在屏幕方向上保持这些状态。例如,在 onStart(Bundle savingBundle) 中我调用:
_timerButton.setBackgroundColor(Color.GREEN);
_pauseButton.setBackgroundColor(Color.YELLOW);
_pauseButton.setEnabled(false);
然后在我的应用程序的整个操作过程中,这些按钮的颜色/启用状态将发生变化。是否有更方便的方法来保留用户界面项(EditText、Button 对象等)的状态,而无需手动保存/恢复每个按钮的每个属性?在屏幕方向之间手动管理这种类型的状态感觉真的很笨拙。
感谢您的帮助。
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");
}
}