我有一个带有一些
EditText
的布局,例如名字、姓氏、城市...我 include
这个布局在另一个布局中出现过几次,所以有两个 EditText
代表名字、姓氏等。我面临的问题是,如果我填写这些字段,例如,在第一个 EditText
中添加“Tom”,在第二个中添加“Tom” “John”,然后我旋转设备,两个 EditText
都有“Tom”。
基本上,我面临着与该用户相同的问题:所有 EditText 都在旋转和反压后填充来自一个 EditText 的数据
正如他所说,我可以手动将
EditText
添加到主层,而不是使用 include
,但这会使 XML 非常混乱。
我也可以尝试用户解决方案,但我也不太喜欢它,并且记住这个问题已经有10年历史了,我想知道是否有更好的解决方案。
谢谢你。
如果您包含的内容包含
ViewGroup
,换句话说,当特定 ViewGroup
所在的 EditText
的父级 EditText
时,可能会出现问题。如果您包含的“EditText”实际上是 ViewGroup 中的布局类型,例如 TextInputLayout。
如果我没记错的话,您可以重写这些方法,这样它们就不会尝试恢复状态。
override fun dispatchSaveInstanceState(container: SparseArray<Parcelable>) {
// Nothing
}
override fun dispatchRestoreInstanceState(container: SparseArray<Parcelable>) {
// Nothing
}
将属性
android:saveEnabled
设置为 false 并使用 onSaveInstanceState()
或 ViewModel