У меня есть Activity A
(Main) и Activity B
.Android Back Stack - метод кнопки UP
Факт: Активность А имеет: android:launchMode="singleInstance"
Обычный сценарий:
- Пользователь запускает приложение>
Activity A
. Пользователь нажимает на пункт>
Activity B
3.A. Если пользователь нажмет на спине/вверх кнопки> Назад к
A
(без вызова Finish() на B)- Пользователь нажимает на тот же товар, как и раньше> Forth в
B
. - В этот момент он может идти туда и обратно без новых случаев. Это все в стеке, и оно не воссоздает действия. (Хорошо!)
http://i41.tinypic.com/jkyuyg.jpg
3.b. Если пользователь нажимает кнопку Home, затем переходит к задаче менеджера и приносит приложение к передней>
Activity B
(все хорошо, до сих пор)- Если пользователь нажимает кнопку UP, он идет к Диспетчеру Задач, и я хочу, чтобы перейти к
Activity A
(кнопка назад, как ожидается, будет работать таким образом, поэтому давайте сосредоточимся на кнопке UP).
- Пользователь нажимает на тот же товар, как и раньше> Forth в
Вот реализация я в Activity B
для вверх и назад кнопки.
@Override
public void onBackPressed() {
moveTaskToBack(true);
// I don't want to finish() the activity, so the user can reclick the same
// item without reloading the whole activity again (webview slow when parsing html).
return;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
moveTaskToBack(true);
// I don't want to finish() the activity... idem.
// I need to implement here the bring Activity A to front
break;
}
}
Итак, что я хочу: к «Назад», чтобы Activity A
сохраняя ту же идею использования стека перезагрузить активность B, если это необходимо, без использования Intents (если это не вызывает активность на фронт, без добавления предметы в стек.)
Сообщите мне, если я объясню себя четко, и если вам нужна дополнительная информация.
UPDATE:
Я нашел это на: http://developer.android.com/training/implementing-navigation/ancestral.html
Это, как я приспособил его.
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
Intent upIntent = new Intent(this, Activity_A.class);
if (NavUtils.shouldUpRecreateTask(this, upIntent)) {
TaskStackBuilder.create(this).addNextIntentWithParentStack(upIntent).startActivities();
} else {
moveTaskToBack(true); // I want it this way. Don't worry.
}
break;
}
}
Но метод NavUtils.shouldUpRecreateTask ВСЕГДА возвращает false.
Я сделал часть http://developer.android.com/training/implementing-navigation/ancestral.html#SpecifyParent, так что это не проблема.
Моя проблема в том, что я хочу узнать, существует ли в стеке Activity A
, когда приложение запускается из диспетчера задач.
Как я могу это достичь? Спасибо.
Почему бы не использовать панель действий http://developer.android.com/guide/topics/ui/actionbar.html. Также проверьте эту ссылку http://developer.android.com/design/patterns/navigation.html – Raghunandan
Да, но я теряю функциональность «go go», которую я хочу сохранить, потому что это завершает «Активность B». – Dandy
Я не понимаю, что значит «идти вперед»? – Raghunandan