Android 13/14下Spinner的OnItemSelectedListener失效问题求助
结合你的现象、日志信息和Android版本特性,这个问题的核心成因集中在Android 13/14的状态恢复机制与Spinner(尤其是Material Spinner)的初始化逻辑冲突,具体拆解为以下几点:
系统自动恢复Spinner状态的时机异常:Android 13+优化了后台应用的状态恢复策略,当你从最近列表清除应用后重启,系统会自动尝试恢复Spinner的选中状态,但此时你的Adapter可能还未完成数据填充或监听器还未正确绑定。这种"先恢复状态、后初始化逻辑"的顺序,会导致Spinner内部的状态标记混乱,既不更新UI,也不触发监听器回调——直到旋转屏幕触发配置变更,重新走完整的初始化流程,状态才被正确同步。
重复设置监听器打断回调链:日志显示启动时两次设置
OnItemSelectedListener,在Android 13+的状态恢复流程中,第二次设置监听器可能覆盖了系统自动恢复状态时的内部回调绑定。Spinner的监听器是单一绑定的,重复设置会导致之前的回调关联失效,而系统恢复状态时的选中操作无法触发新绑定的监听器,最终表现为手动选择无响应。Material Spinner的版本兼容性bug:你使用的最新Material库在Android 13/14上的状态恢复逻辑存在适配问题。Material Spinner对系统的状态恢复事件处理和原生Spinner不同,当系统自动恢复选中状态时,它没有正确触发UI更新和监听器回调,只有在Activity完全重建(如旋转屏幕)时,才会重新初始化并同步状态。
内容的提问来源于stack exchange,提问作者Fat Monk

