在我正在处理的小应用程序中,我需要能够从数据库表中选择一条记录。
为了做到这一点,我创建了一个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
的{{1}}处理程序:
Button
并获得结果,同样在public void openGameClick(View view) {
Intent intent = new Intent(this, GameListScreen.class);
startActivityForResult(intent, -1);
}
类:
MainMenu
一切都按预期工作 - ListActivity启动,我可以看到我的记录,当我选择一个时,onListItemClick正在运行 - 但是@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == Activity.RESULT_OK) {
// result is handled here
}
}
没有被调用,我不明白为什么。在另一个项目中,我遵循相同的基本原则,并在那里工作。
我在这里缺少什么?我确定这是一个简单的错误,但我无法发现它。
我已上传my project以防万一。我正在使用Android 2.2进行测试,因为那是我的手机正在使用的。
答案 0 :(得分:9)
也许这就是为什么
来自javadocs:
在完成后启动您想要结果的活动。当此活动退出时,将使用给定的requestCode调用onActivityResult()方法。 使用否定requestCode与调用startActivity(Intent)相同(活动不作为子活动启动)。