2013-12-22 1 views
0

В моем приложении каждое действие имеет одно и то же меню в панели действий, которое обеспечивает доступ к активности параметров.Навигация к родительской активности из разных под-действий

Когда я работаю с параметрами, я хотел бы перейти к моей родительской деятельности, щелкнув по левой стрелке, как в других моих действиях.

Уникальный родительский элемент других действий определен в manifest.xml.

Но для параметров это невозможно, так как он имеет несколько родителей:

  • матери> ребенка> параметры можно
  • мать> Параметры также возможно!

Мы можем найти это поведение в приложении Gmail:

  • основные> параметры, в которых вы можете вернуться к основным
  • главная> электронной почты> параметров, в которых вы можете получить обратно конкретное письмо, на которое вы смотрели.

Итак, мой вопрос заключается в том, как получить этот gmail-сорт? Можем ли мы динамически изменять родительскую активность параметров?

ответ

0

Есть два способа, которые вы можете выполнить эту задачу:

  1. Используйте TaskStackBuilder и указать родительскую цепь в манифесте, используя android:parentActivityName и связанные с опорно-v4 тег as described in the corresponding Providing Up Navigation training мета-данных. Это рекомендуемый метод, поскольку он подчиняется иерархическому стекю задач.
  2. Предоставьте несколько дополнительных возможностей для запуска и перейдите в зависимости от этого настраиваемого флага. Обратите внимание, что запуск действий через этот механизм не отображает обратную анимацию закрытия текущей активности.
+0

Я уже использовал этот метод для моих других мероприятий, я могу вернуться назад и вперед между моей деятельности, таких как: A> B > C, то A> B, то A> B> D, например Поскольку я определил в очевидном, что: B родителя A C родителя B D родителя B Но моя деятельность параметры можно получить от каждогоctivity, поэтому он имеет несколько родительских элементов, я не могу определить его в файле manifest.xml, как вы рекомендуете, и как я это делал для других действий, вы его получите? – Flo

+0

Я бы предложил для такого случая указать другой задний стек [как подробно описано здесь] (http://developer.android.com/training/implementing-navigation/ancestral.html#NavigateUp). –

0

Комментарии испортите хорошо отступом ответ, так что я anwser мой вопрос:

я, наконец, в конечном итоге с помощью простого пользовательского кода, , потому что я уже посетил несколько раз вашу ссылку (http://developer.android.com/training/implementing-navigation/ancestral.html#NavigateUp) и оно не помогло меня много.

Вот что я сделал: (в else из http://developer.android.com/training/implementing-navigation/ancestral.html#BuildBackStack)

// particular case 
// if this activity is the Parameter/Help activity, just finish it 

if(this.getClass().equals(ActivityParametre.class) || this.getClass().equals(ActivityAide.class)){ 
    finish(); 
    return true; 
} 
// general case 
// otherwise, use pre defined code 
else { 
    NavUtils.navigateUpTo(this, upIntent); 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^