Как я могу управлять действиями, такими как стек фрагментов - PullRequest
0 голосов
/ 22 ноября 2018

У меня много занятий.

A - активность списка.

B - активность формы.И генерируется динамически.Я открываю это действие два раза подряд.

C - результат действия.

A -> B -> B, как простое нажатие нового действия.если результат успешен, я хочу очистить все формы, когда нажимаю C.

A -> B -> B -> C ==> A -> C.

, если результат не удался, когдаЯ нахожусь в C деятельности, он может вернуть различные действия, как указано выше

A -> B или A -> B -> B

Я использую cleartop, когда нажимаю C, но он очищает все действия, как я могу сохранить состояние действия A.

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

* Когда я вернусь из второго B, первый B должен открыть *

Ответы [ 4 ]

0 голосов
/ 22 ноября 2018

Вы можете достичь этого, выполнив следующие шаги:

  1. Установите android:launchMode="singleTask" из ActivityA в AndroidManifest.xml файле.
  2. Установить onNewIntent метод в ActivityA, как показано ниже:

    @Override protected void onNewIntent(Intent intent) { super.onNewIntent(intent); Bundle mBundle = intent.getExtras(); if(mBundle!=null){ String launchActivity = mBundle.getString("activityName"); switch (launchActivity){ case "ActivityD": // This is Activity Name Here it is ActivityD.class startActivity(new Intent(ActivityA.this, ActivityD.class)); break; }<br> }<br> }

  3. Теперь начать ActivityA с ActivityC как показано ниже.

    startActivity(new Intent(ActivityC.this, ActivityA.class).putExtra("activityName", ActivityD.class.getSimpleName()));

Это вызовет onNewIntent метод ActivityA и будет соответствовать аргументу и запускать ActivityD из ActivityA,Таким образом, ваш ActivityA останется в стеке, а ActivityD будет добавлен в стек сверху.

Теперь для достижения A -> B из A -> D вы можете вызывать метод finish () в ActivityD при запуске ActivityB из ActivityD.

Относительно ActivityLaunchMode, пожалуйста, обратитесь по этой ссылке

Надеюсь, это будет работать для вас!

0 голосов
/ 22 ноября 2018

Этого можно добиться, просто чаще используя фрагменты

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

Деятельность может существовать независимо.

Фрагмент :: Когда фрагмент помещается в действие, мы должны запросить сохранение экземпляра.вызывая addToBackstack () во время транзакции фрагмента.

Фрагмент должен жить внутри действия source

Используя фрагмент, вы можете легко удалить любую страницу, которую хотитеиспользуя теги, однако, если вы все еще хотите использовать действие

, если вы используете startActivityForResult () вместо startActivity (), то в зависимости от возвращаемого значения из вашей деятельности вы можете сразу же завершить ()Предшественник деятельности для моделирования поведения, которое вы хотитеИспользуя этот метод во всех ваших действиях, вы можете использовать это поведение для каскадного стека действий, чтобы позволить вам перейти от действия D к действию A.

0 голосов
/ 22 ноября 2018

Когда вы запускаете Activity из Activity B в Activity C или C to D, вам нужно вызвать finish ();ожидайте для Деятельности А. Как A -> D.

Start Activity(new Intent(A.this,D.class));

Теперь, когда вы нажимаете Activity A -> B, затем B -> C и затем C ->, тогда вы должны сделать как

A -> B.

Start Activity(new Intent(A.this,B.class));

B -> C

Intent intent =new Intent(B.this,C.class);
startActivity(intent);
finish();

C -> D

Intent intent =new Intent(C.this,D.class);
startActivity(intent);
finish();

Теперь, когда вынажмите назад, чтобы вернуться к действию А. Вы должны удалить все clearActivityTop ();из кода.

0 голосов
/ 22 ноября 2018

На занятии A вы не можете перейти к занятию B, используя это

    startActivity(new Intent(Activity_A.this, Activity_B.classs));

От B до C

    startActivity(new Intent(Activity_B.this, Activity_C.classs));
    finish();

От C до D

    startActivity(new Intent(Activity_C.this, Activity_D.classs));
    finish();

От DA

    finish();

Он закроется Activity_D и Resume () Activity_A

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