gpt4 book ai didi

Android 不会自动保存 View 状态

转载 作者:太空狗 更新时间:2023-10-29 13:15:25 25 4
gpt4 key购买 nike

基本上,我在一个 Activity 中有一个 TextView 和两个 EditText View 。从那个 Activity 开始,另一个 Activity 开始了。如果我按下设备上的硬件后退按钮(结束第二个 Activity ), View 的状态与之前相同,这很好。然而,在按下(第二个 Activity 的)操作栏上的后退按钮后, View 将失去之前的状态。

根据文档,如果您为 View (EditText、TextView 等小部件)提供 ID,android 将自动保存它们的状态。

For example, the EditText widget saves any text entered by the user and the CheckBox widget saves whether it's checked or not. The only work required of you is to provide a unique ID (with the android:id attribute) for each widget you want to save its state. If a widget does not have an ID, then the system cannot save its state.

对于需要保存其状态的每个 View ,我都有一个唯一的 ID。我也尝试过在 XML 和 textView.setSaveEnabled(true); 中显式使用 android:saveEnabled="true" 但无济于事。

我尝试过实现 onSaveInstanceStateonRestoreInstanceState 并首先为两者调用 superonSaveInstanceState 按预期调用,但从未调用 onRestoreInstanceState。此外,传递给 onCreatesavedInstanceState 始终为 null

在 list 中,我尝试了 android:alwaysRetainTaskState="true"android:stateNotNeeded="false" 但没有成功。

我可以发布代码,但我不确定哪些代码是相关的,因为系统似乎没有按预期运行。什么可能的事情会导致 View 的状态不能被 android 自动保存?感谢任何帮助,如果需要,我可以发布特定代码。

旁注:如果它有任何不同,我正在使用 AppCompat。

最佳答案

尝试使用:

    <activity
android:name=".MyActivity"
android:label="@string/activity_title"
android:launchMode="singleTop"
android:parentActivityName=".MyActivityParent">
</activity>

注意 android:launchMode="singleTop" 属性。

默认情况下,当用户按下后退按钮时,会创建一个新的 Intent,并且您的 Activity 会从头开始重新创建。以这种方式设置 launchMode 属性会告诉 ART 保留并重用您的 Activity 实例。

关于Android 不会自动保存 View 状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35256472/

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