在我正在处理的小应用程序中,我需要能够从数据库表中选择一条记录。当ListActivity完成时未调用onActivityResult
为了做到这一点,我创建的ListActivity
一个子类,GameListScreen
,它显示的记录,并覆盖onListItemClick()
如下:
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
Game g = (Game)getListView().getItemAtPosition(position);
Intent intent = new Intent();
intent.putExtra("id", g.getId());
setResult(RESULT_OK, intent);
finish();
}
然后,为了发动我的活动,我有这在我的MainMenu
活动;一个onClick
处理器的Button
:
public void openGameClick(View view) {
Intent intent = new Intent(this, GameListScreen.class);
startActivityForResult(intent, -1);
}
,并得到的结果,也是在MainMenu
类:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == Activity.RESULT_OK) {
// result is handled here
}
}
一切工作完全按预期 - 在ListActivity开始,我可以看到我的记录,当我选择一个,onListItemClick正在运行 - 但onActivityResult
没有被调用,我不知道为什么。在另一个项目中,我遵循相同的基本原则,并在那里工作。
我在这里错过了什么?我相信这是一个简单的错误,但我无法发现它。
我上传了my project以防万一。我正在使用Android 2.2进行测试,因为这是我的手机正在使用的。
确实,将它设置为0的确有窍门。但我不确定为什么,因为看着我的另一个项目,我在那里使用了-1,但也许我忘了从我的另一台计算机上对我进行更改。噢,很好 - 谢谢你们的帮助,现在我终于可以继续前进。 – 2011-03-13 14:02:02
我有同样的问题,并传递一个负值作为我的requestCode。立刻改变为requestCode的正值,这就是诀窍。 – 2012-01-15 05:01:06