Завершите несколько действий на Android Xamarin - PullRequest
0 голосов
/ 04 мая 2018

У меня есть приложение Xamarin для Android с несколькими действиями:

У меня есть 3 действия A1 , A2 , A3 , которые будут вызываться из действия X0 , например:
X0 -> A1 -> A2 -> A3

X0 может быть любым другим видом деятельности моего приложения, поэтому у меня нет доступа к его типу. На занятии A3 У меня есть кнопка, которую нужно завершить A1 , A2 и A3 и вернуться к X0 .

Как я могу это сделать?

Спасибо

Ответы [ 3 ]

0 голосов
/ 04 мая 2018

Установка этих флагов должна помочь вам, когда вы работаете с последним действием (A3) в этом случае. Intent.FLAG_ACTIVITY_NEW_TASK Intent.FLAG_ACTIVITY_CLEAR_TASK

В качестве альтернативы, вы можете использовать фрагменты, которые позволят вам перейти непосредственно от A3 -> X0, не заканчивая A1 или A2.

0 голосов
/ 04 мая 2018

Хорошо, так что я нашел рабочее решение, но оно очень нечистое:

Когда я начинаю свою деятельность A1 внутри операции X0 , я даю тип операции X0 в виде строки (используя флаг).

Intent newActivity = new Intent(this, typeof(A1));
newActivity.PutExtra("endActivity", typeof(X0).Name);
StartActivity(newActivity);

На занятии A1 , я получаю флаг вот так:

string endActivityType = Intent.GetStringExtra("endActivity");

Затем, когда я начинаю занятие A2 и A3 , я продолжаю указывать тип X0 в виде строки, используя флаг:

Intent newActivity = new Intent(this, typeof(A2));
newActivity.PutExtra("endActivity", endActivityType);
StartActivity(newActivity);

И как только я хочу вернуться к X0 в своей деятельности A3 , я делаю:

 Type typeX0 = Type.GetType("MyAppNamespace." + endActivityType);
 Intent intent = new Intent(this, typeX0);
 intent.AddFlags(ActivityFlags.ClearTop | ActivityFlags.SingleTop);
 StartActivity(intent);

как сказал Кашиш.

0 голосов
/ 04 мая 2018

Поскольку Activity X0 уже находится в заднем стеке, вы можете сделать следующее -

Intent intent = new Intent(A3.this, X0.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
startActivity(intent);

С добавлением флагов все действия в верхней части действия X0 будут закрыты, а X0 станет видимым и не будет перезапущен.

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