Проблемы со стеком активности Android и функцией возврата - PullRequest
1 голос
/ 08 июля 2011

У меня есть четыре действия: A, B, C и D. Приложение начинается с действия A, затем оно переходит к B с использованием явного намерения, затем C и затем D таким же образом.От D, если я хочу вернуться непосредственно к B или A, как это можно сделать?

Ответы [ 2 ]

3 голосов
/ 08 июля 2011

Например, в C. Если вы вызываете finish () после отправки намерения начать действие D, когда пользователь нажимает кнопку возврата в действии D, он / она будет отправлен в действие A или B в зависимости от того, где вы начали задание C. Другой способ - установить флаг для очистки верхней части следующим образом:

Intent intent  = new Intent(this, LoginActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);        
startActivity(intent);

Самый простой способ - вызвать метод finish () в зависимости от того, каким должен быть поток в вашем приложении.

0 голосов
/ 08 июля 2011

в действии A

public void onCreate ()
{// когда вы хотите начать новое действие
startActivity (намерение);// начало действия с B
}

в действии B

public void onCreate ()
{
// когда вы хотите начатьновое действие
startActivityForResult (намерение, 10 // любое значение кода);// начало действия с c
}
protected void onActivityResult (int requestCode, int resultCode, данные намерения)
{
if (resultCode == 25)
{
finish ();
}
}

в действии C

public void onCreate ()
{
// когда вы хотите вернуться назадв Actitvity A
setResult (25);
finish ();
}

Объяснение

1) в действии "A", когда вы начинаете одно новое действиена "B"
2) в действии "B", когда вы начинаете одно действие на "C", используя метод startActivityForResult
3) в действии "C", когда вы закончите, оно, очевидно, перейдет к действию "B", с кодом результата, который вы установили, и, если он совпадает, он закроет действие «B» и перейдет к действию «A»

4) Это один простой трюк, чтобы пропустить одно или несколько действий

...