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

切换其他Fragment返回后,Enigma机App按钮功能异常排查

问题分析与修复方案

核心原因

Fragment切换返回时,系统会重新执行onCreateView创建新的视图实例,但你的lampboardAL没有在每次创建视图前清空,导致集合中留存了上一次Fragment实例的旧ImageView对象。这些旧对象已经脱离当前界面的视图层级,调用setColorFilter自然不会在新界面上生效。

修复步骤

  1. 清空旧视图集合:在onCreateView方法最开头,先清空lampboardAL和RotorAL,确保每次创建视图时集合只存储当前界面的有效View实例:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // 关键:清空旧的View集合,避免切换后引用失效的旧对象
    lampboardAL.clear();
    RotorAL.clear();

    int buttonID;
    View rootView = inflater.inflate(R.layout.fragment_enigma, container, false);
    // 后续代码保持不变...
}
  1. 可选优化:使用ViewBinding
    手动遍历子View容易出错,建议改用ViewBinding替代findViewById,可以更安全地获取视图实例,避免因索引判断错误导致的View收集异常。

验证点

修改后切换Fragment返回,点击键盘Q时,通过Log确认lampboardAL.get(0)的对象地址是否和当前界面的ImageView一致,确保操作的是当前显示的视图。


内容的提问来源于stack exchange,提问作者80s

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 06:40:37