短信列表ListView回退选中问题求解

最近在改源码中的短信模块Mms遇到了一个问题,希望大虾们给我指导下。
问题是这样的:
第一:我在onCreate()方法中直接写一个listView.setSelection(7);时,第一次启动如果是在XP系统下不会有选中第七条短信的效果,但是在linux下直接修改源码会有效果。
第二:我在ConversationList.java类中定义了一个静态常量mmsid来存储选中的短信的id即position(每次onListItemClick的时候就mmsid = position;)事实也证明,每次我查阅完短信(ComposeMessageActivity.java)后按返回键返回到短信列表界面(ConversationList.java)时这个值有改变就是我选中的短信id。然后我就在短信列表界面(ConversationList.java)的onStart()方法中用listView.setSelection(mmsid);方法并加上listView.invalidate(),也没有效果。但是如果我在查阅完短信界面(ComposeMessageActivity.java)的onKeyDown当case KeyEvent.KEYCODE_BACK:时我用Intent的startActivity方法启动短信列表(ConversationList.java)界面时又有效果。所以我觉得是每次startActivity后重新走了onCreate之后才会有效。但我一直找不出什么原因。因为项目急,自己也找了好几天都没有进展,现在愁死了。希望有牛人给我详解下。谢谢了

setSelection函数虽然没有呈现选中的效果,但是哪一项的确被选中了,你要作的就是把这个效果显示出来。可以使用如下代码进行显示:
[code="java"]
listView.requestFocusFromTouch();
listView.setSelection(mmsid);
listView.setFocusable(true);
[/code]

这个问题主要在于Activity的生命周期。新建一个Activity时,是从onCreate开始,倒onDestory销毁结束。当你从一个Activity返回到上一个Activity时,就会执行上一个Activity的onResume方法,而不是认为的onStart方法。所以把你的逻辑写到onResume方法里就好了,不要写到onStart里

还有提醒你一点,在触摸模式下setSelection是不可用的。。。这个你可以参考android doc文档