gpt4 book ai didi

java - 如何保存 View 的状态并在用户返回时恢复它?

转载 作者:行者123 更新时间:2023-12-02 00:05:28 25 4
gpt4 key购买 nike

我正在创建一个 Android 应用程序,其中我与两个不同的 View 进行交互,因此用户可以通过单击按钮在它们之间进行切换。请注意,我正在使用 setContentView 方法。那么如何保存每个 View 的状态(包含 EditText 、可以启用/禁用的按钮)并在用户离开 View 并返回时恢复它?

@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) 是一个 EditText 。

@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的状态。

最佳答案

我建议阅读有关 Activity 生命周期的内容,特别是有关保存和恢复 UI 状态的部分,可以在 here 找到。 。基本上,您需要在 onSaveInstanceState() 中保存 UI 状态。

编辑:现在发生的情况是,自从您首先调用 super.onSaveInstanceState(state) 以来,EditText 值未保存。首先将 EditText 值保存到 Bundle 中,然后调用 super.onSaveInstanceState(state):

@Override
protected void onSaveInstanceState(Bundle State) {
State.putCharSequence("key" , txt.getText());
super.onSaveInstanceState(State);
}

然后在您的 onRestoreINstanceState 上,您不必调用 super,您只需获取保存的值并将其立即设置为您的 EditText.

关于java - 如何保存 View 的状态并在用户返回时恢复它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58159743/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com