为什么 Android 保存 EditText 的状态,而不是 TextView?

问题描述 投票:0回答:1

在 Android 项目中,我试图找出在片段之间导航时状态保存是如何工作的(by

NavHostFragment
)。

假设我有片段 A 和片段 B:

  • Fragment A包含一个button,一个textView和一个editText
  • 片段A只有一个参数
    ARG_IS_EDITABLE
    (布尔值)
  • 如果片段是在参数设置为
    true
    的情况下创建的,我正在以编程方式更改我提到的那三个视图的值。
  • 之后我设置
    arguments = null

现在,点击按钮触发导航到片段 B.

当我然后单击返回(popBackStack)时,EditText 中的文本被恢复,但 textView 和 Button 的文本被恢复。

Android 是否仅针对某些类型的小部件选择性地调用

onSaveInstanceState()
?我可以以某种方式强制它也保存例如状态吗?文本视图?

我基本上是在尝试避免每次从片段 B 返回时都设置值。

PS:对于更多上下文,真实示例是您有表单片段 (A),当您单击某个按钮时,您将导航到包含可选列表 (B) 的片段。您从列表中选择一个选项,设置片段结果并将返回堆栈弹出回 A.

android android-fragments android-navigation
1个回答
2
投票

TextView
Button
中的文本通常是静态的,直接从字符串资源中提供。动态更改其中任何一个上的文本的情况更为罕见。

另一方面,

EditView
中的文本是由用户输入的,所以它的值会在运行时改变。

我想Android开发人员选择在

onSaveInstanceState()
上自动调用
EditView
,而不是
TextView
Button

© www.soinside.com 2019 - 2024. All rights reserved.