You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

切换主题触发Activity重建时Include标签视图数据异常求助

问题原因及解析

核心原因

问题出在两个include布局内的EditText共用了同一个id。Android的视图状态保存与恢复逻辑是靠控件id来匹配数据的:当Activity因主题切换重建时,系统会先保存当前所有控件的状态,其中id为editText的控件最后一次被赋值的是secondItem.data;重建后,系统会把这个保存的值同步给所有id为editText的控件,最终导致两个include视图都显示同一份数据。

首次创建正常的原因

首次启动Activity时,没有历史视图状态需要恢复,你通过ViewBinding直接给两个独立的EditText实例设置数据,此时系统不会介入状态恢复流程,所以两个控件能正确显示各自的内容。

快速解决思路

要解决这个问题,只需要确保每个include内的EditText拥有唯一id:

  • 方案1:修改layout_edit_text布局,给EditText设置动态id(比如在代码中动态生成唯一id);
  • 方案2:在include标签中通过tools:replace="android:id"覆盖内部EditText的id,为每个include的EditText指定唯一id;
  • 方案3:手动处理状态保存与恢复,在onSaveInstanceState中分别保存两个EditText的值,重建时手动赋值,绕过系统的自动恢复逻辑。

内容的提问来源于stack exchange,提问作者SadeQ digitALLife

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 05:23:16