[英]how to save state of a View and restore it when the user comes back in?
我正在创建一个 Android 应用程序,我在其中与两个不同的视图进行交互,因此用户可以通过单击按钮在它们之间切换。 请注意,我使用的是 setContentView 方法。 那么如何保存每个视图的 state(包含 EditText、可以启用/禁用的按钮)并在用户离开视图并返回时恢复它?
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_layout1);
}
@Override
protected void onSaveInstanceState(Bundle State) {
super.onSaveInstanceState(State);
State.putCharSequence("key" , txt.getText());
}
(txt) 是一个编辑文本。
@Override
protected void onRestoreInstanceState(Bundle State) {
super.onRestoreInstanceState(State);
txt.setText(State.getCharSequence("key"));
}
public void method1(View view) {
setContentView(R.layout.id1);
}
public void method2 (View v){
setContentView(R.layout.id2);
}
当用户返回它时,我想恢复 layout1 的 state。
我推荐阅读 Activity 生命周期,特别是关于保存和恢复 UI state 的部分,可以在这里找到。 基本上,您需要将 UI state 保存在onSaveInstanceState()
中。
编辑:现在发生的是EditText
值没有保存,因为您首先调用super.onSaveInstanceState(state)
。 首先将EditText
值保存到Bundle
,然后调用super.onSaveInstanceState(state)
:
@Override
protected void onSaveInstanceState(Bundle State) {
State.putCharSequence("key" , txt.getText());
super.onSaveInstanceState(State);
}
然后在您的onRestoreINstanceState
上,您不必调用super
,您只需获取保存的值并立即将其设置为您的EditText
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.