[英]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.