2016-02-10 3 views
2

Например: У меня есть 5 видов деятельности:Android: Можно ли пройти несколько мероприятий вперед?

активность А -> Деятельность B -> C активность -> Активность D -> E активность

Activity A должен пройти через активность В то C, затем D, затем E в последовательности.

Я хочу передать намерение в активность А на активность E без проходящей через B, C, D.

Можно ли это сделать?

Мое мимолетное намерение в активности А в настоящее время:

fab = (FloatingActionButton) rootView.findViewById(R.id.fabAddConList); 
     fab.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       Intent createContactList = new Intent(context, ActivityB.class); 
       createContactList.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION); 
       createContactList.putExtra("userid", userID); 
       startActivity(createContactList); 
      } 
     }); 

Моя приемная цель в деятельности E в настоящее время:

Intent lastIntent = getIntent(); 
     userid = lastIntent.getStringExtra("userid"); 

--------------- --------------------РЕДАКТИРОВАТЬ----------------------------- ------------

Как основывается на моих кодах в этом сообщении, я передаю намерение в действие А в действие Б вместо E, потому что я хочу перейти в Activity B, когда я нажимаю кнопку. Но как я могу перейти к Activity B, не передавая «userid» в Activity B и не дожидаясь, пока он не достигнет действия E?

+0

да возможно –

+0

, что ваша проблема? я имею в виду, что вы столкнулись с любой проблемой. – androidnoobdev

+0

@androidnoobdev Привет, моя проблема: у меня есть проблема с передачей намерения через все действия B, C и D. Поэтому я пытаюсь выяснить, могу ли я передать его прямо от A до E, не передавая его через B, C и D. –

ответ

0

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

getIntent().removeExtra("key"); 

Если вы хотите переслать намерение. Вы можете сделать это

Intent newIntent = new Intent(receivedIntent); 
+0

Привет, где я могу добавить эту строку кода? Поскольку в настоящее время намерение не проходит с моими текущими кодами –

+0

Пожалуйста, проверьте, создаете ли вы новый экземпляр намерения или получаете ссылку на существующее намерение и передаете его в одиночку. Лучше поместите вызов startActivity для каждого вызова с намерением, как вы передаете намерение. Это поможет понять каждый звонок от начала до конца. – Rakesh

+0

Не создавайте новый экземпляр, как вы делаете - Intent createContactList = новый Intent (context, ActivityE.class); Лучше получить существующее намерение от полученных намерений, подобных этому.Intent newIntent = новый Intent (receivedIntent); – Rakesh

-1

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

Это основное применение статических переменных в Java. Объявляется новый класс с государством вы хотите сохранить:

public class State { 
    public static String value; 
} 

В активность А:

State.value = "value that you want to read in activity E" 

В активность E:

String v = State.value; 
+0

может создать проблему с утечкой памяти. не дают временных решений. – androidnoobdev

+0

Если это просто короткая строка или целое число, это не утечка. Утечка - это когда объект сохраняется дольше, чем его ожидаемое время жизни. Здесь мы полностью ожидаем, что основной объект строки будет жить за пределами активности. –

+0

Как я могу это сделать? Можете ли вы привести пример? –

0

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

В вашем случае рассмотрите вопрос о частичной информации для ActivityE до SharedPreferences. Они используют пары ключ-значение для хранения данных так же, как и намерения, см. Также этот link to documentation.

Кстати, с точки зрения безопасности: по крайней мере в некоторых версиях android, Intent, используемый с startActivity(), не является приватным для вашего приложения. Поэтому будьте осторожны, чтобы не передавать конфиденциальные данные с помощью startActivity().

0

Нет, вам нужно передать значение из всех видов деятельности.

Другое можно использовать SharedPreferences, чтобы сохранить значение в Activity A и получить это значение в Activity E. проверьте this для справки.

Другой способ является статической переменной, возьмите public static переменную A и доступ к нему из Activity E

в деятельности по

public static String yourVariable="value"; 

в деятельности по обеспечению доступа E его с помощью A.yourVariable

+0

Можете ли вы привести пример? –

+0

пример для чего? –

0

Для моего приложение, пользователь должен будет пройти через активность А до Е в последовательности . Пользователь не может перейти от Activity A к Activity E straight без передачи B, C и D. Могу ли я передать намерение от A до E , когда процесс все еще идет в последовательности, такой как A, B, C, D, E?

ваша вся деятельность в определенной последовательности, то вы должны передать значение из всех видов деятельности с использованием намерения.

альтернатива

использование Preference для хранения значения или static variable

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