作者:Lyj眼淚啲菋噵 | 来源:互联网 | 2024-11-18 13:23
在对《供热世界》项目的维护过程中,使用ActivityGroup和Tab进行Activity切换时,发现返回后的Activity列表项点击事件失效。通过分析发现,这是由于Intent中添加了FLAG_ACTIVITY_SINGLE_TOP标志导致的。
在对《供热世界》项目的维护过程中,使用ActivityGroup和Tab进行Activity切换时,发现返回后的Activity列表项点击事件失效。经过调试发现,问题出在Intent中添加了FLAG_ACTIVITY_SINGLE_TOP标志。该标志使得已存在于任务栈顶的Activity不会被重新创建,而是直接复用,以节省资源并提升用户体验。
然而,这种处理方式导致了点击事件的失效,需要重新加载才能恢复。通过查看Log日志,发现Activity返回后调用了onNewIntent()方法。因此,可以在onNewIntent()方法中通过Handler发送消息,刷新Adapter和ListView,而不是重新加载数据。具体做法是调用adapter.notifyDataSetChanged()和myListView.invalidate(),这样可以模拟数据更新,通知适配器响应数据变化,从而使列表项重新获得焦点。