Переадресация результата активности родителю в режиме запуска SingleTop - PullRequest
2 голосов
/ 01 июня 2010

У меня есть два действия: MainListActivity и DetailViewActivity. DetailViewActivity устанавливается с android:launchMode="singleTop".

При нажатии на элемент в действии «основной список» запускается действие «подробный просмотр» с помощью:

startActivityForResult(detailIntent, REQUEST_CODE_DETAIL);

Если после этого я вызову setResult(RESULT_OK, resultData); и finish(); из операции Detail, эти resultData будут правильно получены методом onActivityResult(..) действия "основной список".

Однако, если я реализую навигацию типа «увидеть предыдущий» / «увидеть дальше» в действии «Деталь» и реализую ее с помощью singleTop, этот результат больше не будет возвращаться к исходному действию:

Intent nextItemIntent = this.createIntent(nextId);
nextItemIntent.setFlags(Intent.FLAG_ACTIVITY_FORWARD_RESULT);
startActivity(nextItemIntent);
// at this point, my DetailActivity's onNewIntent() method is called, and the new data is loaded properly

Но отсюда, когда я звоню setResult(..) и finish(), моя деятельность в MainList никогда не получает новый / обновленный результат.

Кто-нибудь знает, что я делаю не так?

1 Ответ

5 голосов
/ 01 июня 2010

Бах ... моя ошибка.Похоже, проблема была FLAG_ACTIVITY_FORWARD_RESULT.Очевидно, этот флаг не необходим при использовании FLAG_ACTIVITY_SINGLE_TOP и onNewIntent(..) .. Так что, установив FLAG_ACTIVITY_FORWARD_RESULT, я фактически говорил Android переадресовать свои данные результатов на одно действие дальше в стек (действие передMainListActivity).

Я убрал этот флаг, и теперь он работает как положено:

Intent nextItemIntent = this.createIntent(nextId);
nextItemIntent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
startActivity(nextItemIntent);

И все хорошо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...