onActivityResult не вызывается при завершении ListActivity - PullRequest
2 голосов
/ 13 марта 2011

В небольшом приложении, над которым я работаю, мне нужно иметь возможность выбрать запись из таблицы базы данных.

Для этого я создал подкласс 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 не вызывается, и я понятия не имею, почему. В другом проекте я следую тому же основному принципу, и он работает там.

Что мне здесь не хватает? Я уверен, что это простая ошибка, но я не могу ее обнаружить.

Я загрузил мой проект на случай, если это поможет. Я использую Android 2.2 для тестирования, так как это то, что использует мой телефон.

1 Ответ

9 голосов
/ 13 марта 2011

Возможно, именно поэтому

Из Javadocs:

Запустите действие, для которого вы хотите получить результат, когда оно закончится. Когда эта операция завершается, ваш метод onActivityResult () будет вызываться с заданным параметром requestCode. Использование отрицательного кода запроса равнозначно вызову startActivity (Intent) (действие не запускается как вспомогательное действие).

...