gpt4 book ai didi

android - 解释GoogleApi savedInstanceState

转载 作者:行者123 更新时间:2023-11-30 04:05:02 27 4
gpt4 key购买 nike

在 Google Api 示例代码中,他们有一个关于保存状态的非常简单的示例。我需要这个来处理屏幕旋转。

我的问题是我不明白方法 getSavedText()setSaveText() 是从哪里调用的。我将调试器放在它们上面,但它永远不会被触发。整个事情只是靠“魔法”运作。我还能节省什么?我在哪里可以找到解释魔法的文档

public class SaveState extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_save_state);
((TextView)findViewById(R.id.msg)).setText(R.string.hello_world);
}
CharSequence getSavedText() {
return ((EditText)findViewById(R.id.saved)).getText();
}
void setSavedText(CharSequence text) {
((EditText)findViewById(R.id.saved)).setText(text);
}
}

链接 http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/SaveRestoreState.html

备用链接 http://goo.gl/6TJy5

最佳答案

这个 Api Demo 示例是一个糟糕的示例,因为当您阅读文档时,您期望它会覆盖 onSaveInstanceState() 方法而不是在 onCreate() 或 onRestoreInstanceState() 中使用持久状态,这令人困惑,但事实并非如此。

首先,getSavedText() 和 setSavedText() 方法未在此保存和恢复状态 Activity 中使用。它们在 LocalSample Instrumentation 示例中使用/调用。

忘记这两个方法你可以把它们擦掉。让我们来看看这个示例是如何工作的;在后台 Android 调用 onRestoreInstanceState() 并使所有 UI View 将其状态持久保存到该方法的 Bundle 参数中。请调试代码并在旋转屏幕后检查此示例的 onCreate() 方法中的 savedInstanceState 参数。您将在该 Bundle 中看到 R.id.saved EditText 的旋转文本之前。主要技巧是,为什么其中一个 EditText 正在保存其状态而另一个不是,这是因为 EditText 的 freezesText 属性。 freezesText 属性使 EditText/TextView 在 onSaveInstanceState 方法中保存其状态。请看here有关 freezesText 的更多信息。

从 save_restore_state.xml 中删除 android:freezesText="true"或将其设置为 false 或重写 onRestoreInstanceState 方法并且不调用 super.onRestoreInstanceState() 并观察它在旋转(配置更改)后失去其状态。

注意:您不必为此示例重写 onRestoreInstanceState 方法,但对于保存 Activity 内部状态的其他要求,您必须重写。

关于android - 解释GoogleApi savedInstanceState,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11816026/

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