ListActivity完成时未调用onActivityResult

时间:2011-03-13 13:42:20

标签: android listactivity

在我正在处理的小应用程序中,我需要能够从数据库表中选择一条记录。

为了做到这一点,我创建了一个ListActivityGameListScreen的子类,它显示了记录,并覆盖了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进行测试,因为那是我的手机正在使用的。

1 个答案:

答案 0 :(得分:9)

也许这就是为什么

来自javadocs:

在完成后启动您想要结果的活动。当此活动退出时,将使用给定的requestCode调用onActivityResult()方法。 使用否定requestCode与调用startActivity(Intent)相同(活动不作为子活动启动)。