Установить корневую активность / намерение в Android - PullRequest
3 голосов
/ 14 октября 2010

Я переключаюсь между различными активностями, используя Intents.Для одного действия я хотел бы очистить стек истории, поэтому, когда пользователь нажимает кнопку «Назад», он возвращает их домой вместо предыдущих действий в моем приложении.

Ответы [ 2 ]

6 голосов
/ 14 ноября 2010

Мне пришлось реализовать то же самое для моего проекта. В итоге я заменил: startActivity (я); с startActivityForResult (i, UniqueId); во всех действиях я хотел быть частью «стека истории».

Затем реализовано:

setResult(UniqueId);
finish();

в активности ребенка, когда я хотел закрыть ребенка и вернуться в «дом / корень».

В родительском упражнении я реализовал:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == UniqueId && resultCode == UniqueId) {
 setResult(UniqueId);
 finish();
}
super.onActivityResult(requestCode, resultCode, data);
}

Что фактически означает, что если дочернее действие отправило результат "home / root" (представленный UniqueId), то все родители этого дочернего действия использовали "startActivityForResult (i, UniqueId)" закроется также.

Надеюсь, что имеет смысл?

1 голос
/ 14 октября 2010

Вы можете попробовать позвонить finish() на мероприятиях, которые вы не хотите держать при звонке startActivity?

Или, решение для менее android, прислушивайтесь к onBackPressed() в ваших действиях и затем вызывайте startActivity() в вашем основном задании с установленным флагом CLEAR_STACK.

...