gpt4 book ai didi

android - onSaveInstanceState/onRestoreInstanceState 和 View 状态

转载 作者:行者123 更新时间:2023-11-29 16:10:58 26 4
gpt4 key购买 nike

根据onSaveInstanceState的文档:

The default implementation takes care of most of the UI per-instance state

和 onRestoreInstanceState:

The default implementation of this method performs a restore of any view state that had previously been frozen

我不确定这到底是什么意思。这是否意味着在被杀死并现在恢复后返回时,显示给用户的 UI 屏幕会自动恢复其所有数据?如果是这样,我没有看到。除非我自己设置内容 View ,否则我得到的只是一个空屏幕。

我是不是理解错了?

最佳答案

默认实现将适用于定义了 id 的每个小部件。例如,如果您有一个 EditText 并且您将提供它的 ID,那么系统将在 Activity 因方向和相同而被杀死时保存它的值,并在重新创建 Activity 时恢复 EditText 值。

编辑

如果您有一个基本布局,并且如果您要在 View 层次结构中动态添加一些 View ,那么您将不得不自己处理保存状态和恢复状态。同样,当您的 Activity 将被重新创建时, Activity 的 onCreate() 方法将被调用,因此在此方法中首先设置您正在创建和动态添加的所有添加 View ,然后您可以根据您的 Intent 检查额外参数正在进入 onCreate() 方法。此额外参数与您在 onSaveInstanceState 方法中添加额外参数完全相同。

所以像下面这样实现。

int x = 10;
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putInt("x", x);
}

并且在 onCreate 方法中,您可以获得如下所示的 x 参数

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.xxx);

if(savedInstanceState.containsKey("x")) {
x = savedInstanceState.getInt("x");
}
}

关于android - onSaveInstanceState/onRestoreInstanceState 和 View 状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13356342/

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