закрыть диалоговое окно при возвращении к активности

Я следовал документу для разработчиков Android, чтобы создать уведомление

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

public class MyActivity extends Activity{

   @Override
   protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

        //get extras from intent from notification component
        Bundle extras = getIntent().getExtras();
        if(extras != null){
             showDialog();
        }
   }

   private void showDialog(){
      ...
      //There is a "open" button on the dialog, which opens browswer
      openButton.setOnClickListener(new View.OnClickListener() {
       @Override
       public void onClick(View view) {
            //I dismiss the dialog
           dismissDialog();

            //Then I open the browser
           Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(myUrl));
           startActivity(browserIntent);

       }
    });
   }

}

В показанном диалоговом окне есть кнопка «Открыть», при нажатии на которую открывается браузер. Здесь все работает нормально.

Если теперь нажать физическую кнопку «Назад», браузер исчезнет, ​​MyActivity снова отобразится. однако onCreate() вызывается снова (иногда), при этом Bundle extras = getIntent().getExtras(); снова получает то же самое намерение, и снова отображается диалоговое окно.

Как убедиться, что после открытия браузера диалогового окна при нажатии физической кнопки «Назад» диалоговое окно больше не отображается?


person Leem.fin    schedule 05.02.2014    source источник
comment
Добавьте флаг в намерение.   -  person Pankaj Kumar    schedule 05.02.2014
comment
определить sometimes? (используйте startActivityForResult, чтобы определить, что вы возвращаетесь из браузера)   -  person njzk2    schedule 05.02.2014
comment
@Pankaj, я добавил флаг Intent.FLAG_ACTIVITY_CLEAR_TOP, Intent.FLAG_ACTIVITY_NEW_TASK, это не помогает.   -  person Leem.fin    schedule 05.02.2014
comment
@ njzk2, он вернулся из браузера   -  person Leem.fin    schedule 05.02.2014


Ответы (1)


Попробуйте так:

Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(myUrl));
finish();         
startActivity(browserIntent);

Еще один способ — взять статическую логическую переменную/предпочтение:

static boolean isNotify=false;
Bundle extras = getIntent().getExtras();

        if(extras != null)
        {
             isNotify= true;
        }

Поместите этот код в свой метод onResume():

    if(isNotify)
    {
         isNotify=false;
         showDialog();
    }
person Sagar Shah    schedule 05.02.2014
comment
если вызовите finish(), моя активность будет уничтожена. Мне все еще нужно, чтобы моя активность отображалась, когда я возвращаюсь из браузера. - person Leem.fin; 05.02.2014