我在xml布局中使用了多个include标签,如下所示:
<include
android:id="@+id/firstView"
layout="@layout/layout_edit_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginHorizontal="@dimen/normal_margin"
android:layout_marginTop="@dimen/normal_margin" />
<include
android:id="@+id/secondView"
layout="@layout/layout_edit_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginHorizontal="@dimen/normal_margin"
android:layout_marginTop="@dimen/normal_margin" />
字符串
这两个包含标签是相同的,它们只是一个EditText和一个Label。
他们的输入数据在Kotlin活动中以编程方式更新,一切正常,视图更新正确,但当我在调用onCreate后更改设备主题(配置更改)时,突然两个包含视图(firstView,secondView)具有相同的值(secondView的值)
更新:
我使用viewBinding来更新视图:
firstView.editText.setText(firstItem.data)
secondView.editText.setText(secondItem.data)
型
但在重新创建Activity后,包含的两个视图具有相同的数据(secondItem数据)
- 原因是什么?为什么活动创建时第一次没有出现此问题?*
1条答案
按热度按时间l3zydbqr1#
这是因为在视图层次结构中有多个具有相同id的
EditText
(包含在同一个文件中)。当Activity被重新创建时,它会自动恢复视图的一些基本数据,包括EditText中保留的文本,系统使用视图的ID来保存,查找和恢复数据,具有相同空id的多个相同视图(由于包含来自同一文件)将误导还原过程通过以下方式禁用EditText自动保存状态:
字符串
手动保存和恢复EditText视图的状态(可选)。或者跳过此步骤并将其留空:
型