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