2016-01-08 6 views
3

У меня проблема. У меня есть два мероприятия - MainActivity and ActivityBAndroid - Open уже создана Активность

a. Первая деятельность (MainActivity) включает одну кнопку, которая начинает ActivityB

 button.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View arg0) { 
       Intent activityB = new Intent(MainActivity.this, activityB.class); 
       startActivity(activityB); 
      } 
     }); 

b. Второе действие имеет несколько текстовых полей

Когда я нажимаю кнопку «Назад» в ActivityB, приложение переключается на MainActivity, но я не заканчиваю() ActivityB.

Как я могу запрограммировать кнопку на MainActivity, которая проверит, было ли уже создано ActivityB. Если да, просто переключитесь на ActivityB (возможно, с некоторыми типизированными данными в текстовых полях), иначе создайте ActivityB и переключитесь на него ???

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

Я попытался

android:launchMode="singleInstance" 

и флаги FLAG_ACTIVITY_REORDER_TO_FRONT ...

+0

', который будет проверять, если ActivityB был уже создан. Если да, просто переключитесь на ActivityB'.Использование 'singleInstance' может позволить вам достичь этого, но если экземпляр будет использован, ваша« MainActivity »будет выскочена (закончена). Это то, что вы хотите? – Sufian

ответ

2

ActivityA -> ActivityB -> ActivityA (повторно)

в ActivityB при запуске ActivityA:

  • использование FLAG:

    /** 
        * When an existing singleTask activity is launched, 
        * all other activities above it in the stack will be destroyed. 
        * It's different when launchMode is "Standard". 
        * The task which contains flag will come to the foreground 
        * and keep the state the same as before. 
        * When you press HOME and launch the activity again, 
        * ActivityManger calls an intent 
        *  {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] 
        *  flag=FLAG_ACTIVITY_NEW_TASK|FLAG_ACTIVITY_RESET_IF_NEEDED cmp=A}  
        */ 
    
    Intent.FLAG_ACTIVITY_CLEAR_TOP|Intent.FLAG_ACTIVITY_SINGLE_TOP; 
    
  • набор дополнений или действие

и в ActivityA переопределение:

/** 
* This is called for activities that set launchMode to "singleTop" in 
* their package, or if a client used the {@link Intent#FLAG_ACTIVITY_SINGLE_TOP} 
* flag when calling {@link #startActivity}. In either case, when the 
* activity is re-launched while at the top of the activity stack instead 
* of a new instance of the activity being started, onNewIntent() will be 
* called on the existing instance with the Intent that was used to 
* re-launch it. 
* 
* <p>An activity will always be paused before receiving a new intent, so 
* you can count on {@link #onResume} being called after this method. 
* 
* <p>Note that {@link #getIntent} still returns the original Intent. You 
* can use {@link #setIntent} to update it to this new Intent. 
* 
* @param intent The new intent that was started for the activity. 
* 
* @see #getIntent 
* @see #setIntent 
* @see #onResume 
*/ 
@Override 
protected void onNewIntent(Intent intent) { 
    super.onNewIntent(intent); 
    setIntent(intent); 
    /** when we are back check here intent action for example or extras */ 
} 

То не то, что я имею в виду. Пожалуйста, прочитайте еще раз: как я могу запрограммировать кнопку MainActivity, которая проверит, был ли ActivityB уже создан. Если да, просто переключитесь на ActivityB (возможно, с некоторыми типизированными данными в текстовых полях), иначе создайте ActivityB и переключитесь на него ??? - Юлиуш Hajdacki

@ Юлиуш-hajdacki да это именно то, что и хотят :)

  1. первой активности с помощью кнопки
  2. кнопку слушателя, чтобы начать деятельность с флагами
  3. проверки, если метод onNewIntent был занят или занял второе место
  4. результат возврата к первому действию (через стартовую деятельность с дополнительными услугами)

    • мольбы прочитать осторожность еще раз :)
+0

Это не то, что я имею в виду. Пожалуйста, прочитайте еще раз: как я могу запрограммировать кнопку MainActivity, которая проверит, был ли ActivityB уже создан. Если да, просто переключитесь на ActivityB (возможно, с некоторыми типизированными данными в текстовых полях), иначе создайте ActivityB и переключитесь на него ??? –

+0

@ juliusz-hajdacki yes Это именно то, что вы хотите :) первая активность с кнопкой -> начать деятельность с флагами -> проверить, был ли включен метод onNewIntent или onCreate -> вернуть результат в первую активность (через начальную активность с дополнительными функциями) - читать осторожно еще раз :) – ceph3us

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