编辑文本在旋转后填充相同的数据

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

我有一个带有一些

EditText
的布局,例如名字、姓氏、城市...我
include
这个布局在另一个布局中出现过几次,所以有两个
EditText
代表名字、姓氏等。我面临的问题是,如果我填写这些字段,例如,在第一个
EditText
中添加“Tom”,在第二个中添加“Tom” “John”,然后我旋转设备,两个
EditText
都有“Tom”。

基本上,我面临着与该用户相同的问题:所有 EditText 都在旋转和反压后填充来自一个 EditText 的数据

正如他所说,我可以手动将

EditText
添加到主层,而不是使用
include
,但这会使 XML 非常混乱。

我也可以尝试用户解决方案,但我也不太喜欢它,并且记住这个问题已经有10年历史了,我想知道是否有更好的解决方案。

谢谢你。

android layout android-edittext include android-include
1个回答
0
投票

如果您包含的内容包含

ViewGroup
,换句话说,当特定
ViewGroup
所在的
EditText
的父级
EditText
时,可能会出现问题。如果您包含的“EditText”实际上是 ViewGroup 中的布局类型,例如 TextInputLayout。

解决方案1

如果我没记错的话,您可以重写这些方法,这样它们就不会尝试恢复状态。

override fun dispatchSaveInstanceState(container: SparseArray<Parcelable>) {
    // Nothing
}

override fun dispatchRestoreInstanceState(container: SparseArray<Parcelable>) {
    // Nothing
}

解决方案2

将属性

android:saveEnabled
设置为 false 并使用
onSaveInstanceState()
ViewModel

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