2016-11-29 1 views
0

У меня есть открытые мероприятия, как этотКак вернуться к ранее открытой деятельности без потери данных

активности-A (Получить пользователь Личной информации) ->

активность-B (Getting Пользовательского Контакта Info) ->

Activity-C (Получение пользователя кредитной карты) ->

Activity-D (Credit Card Verification)

Теперь от деятельности -D, мне нужно перейти к Activity-B с потере введенных пользователем данных в Activity-B

Я пробовал finish() menthod on Activity-D Но он терпит неудачу.

У меня есть все виды деятельности, используя следующий метод. Пример из Activtiy-А в Activty-B

Intent intent_B = new Intent(getApplicationContext(), ActivityB.class) 
startActivity(intent_B); 

Как я возобновить активность-B от Activity-D

+1

использовать saveInstanceState для обработки этих событий .. Прочитайте документацию здесь .. https://developer.android.com/training/basics/activity-lifecycle/recreating.html – Queendevelopers

+0

Просто вызовите действие b из операции d снова –

+0

@MSP как я вызываю activtiy B из действия D. Он создает как новую активность без каких-либо данных, которые я ввел. – nifCody

ответ

1

Простых решений для вашей проблемы.

вы должны позвонить finish(), прежде чем перейти к деятельности D.

Intent intent_D = new Intent(getApplicationContext(), ActivityD.class) 
startActivity(intent_D); 
finish(); 

это закончат активность C и активность A и B по-прежнему в фоновом режиме. поэтому, когда вы нажмете «Backpress» или вызовите finish() в Activity D, вы будете перемещаться по Activity B, и ваши данные будут доступны без каких-либо дополнительных усилий.

+0

Отлично! Это работа Спасибо – nifCody

+0

Добро пожаловать! @nifcody – NishchalAndroid

-1

Вот

В деятельности 1 ::

int REQ_INT=888; 
Intent intent_B = new Intent(getApplicationContext(), ActivityB.class) 
startActivityForResult(intent_B,REQ_INT); 
@Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     super.onActivityResult(requestCode, resultCode, data); 
     if (resultCode == RESULT_OK) 
      switch (requestCode) { 
       case REQ_INT: 
       //DO your stuff here after getting in this activity again.. 
       break; 
      } 
    } 

В действии 2:

После завершения задания для этой деятельности.

Просто

setResult(RESULT_OK); 
finish(); 

вы можете передать данные в эту деятельность с намерением ..

Или пойти посмотреть кулисных Link1Link 2

+0

и где здесь ответ на конкретный вопрос? – Beloo

0

Лучший способ сделать это было бы использовать либо static переменные или Singleton класс. Вы можете найти одноточечно объясняется здесь: link

Как для статических переменных, пожалуйста, смотрите здесь: link

1
  1. Магазин/Восстановление целые необходимые данные активности В к savedInstanceState.

  2. Начало активности B от активности D с Intent.FLAG_ACTIVITY_CLEAR_TOP

Это приводит к поведению вам точно нужно:

  • активность C & D очищается от backstack
  • ранее созданной деятельности Б открыт
  • Пользователь может вернуться из операции D в действие C, нажав кнопку «Назад»
  • Также мы защитить данные от потери в случае удаления невидимых действий из памяти системы
Смежные вопросы