今天,在修改以前同事的项目《供热世界》的时候,利用ActivityGroup和Tab切换Activity之后,发现返回后的Activity列表Item点击事件消失,原因是Intent增加了Intent.FLAG_ACTIVITY_SINGLE_TOP属性,为Activity设置这种启动模式之后,已存在的位于Task栈顶的Activity将不再重新创建,而是重复利用,节省资源和增加用户体验。
却造成了点击事件的未响应,必须重新加载以后才能响应。利用Log日志,发现Activity返回后调用了onNewIntent()方法,于是在这个方法中利用handler,发送消息,将Adapter、ListView全部刷新,并不是冲洗加载数据,只是调用adapter.notifyDataSetChanged()和myListView.invalidate()完美解决,只是形势上假装有新数据,通知适配器响应数据变化,从而重新获取焦点。
天生我才必有用,千金散去还复来!