2017-03-10 1 views
-2

ich eine Alertdialog Aufforderung während onCreate der Anwendungsklasse haben (i hinzugefügt <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />)android - warum alertDialog zeigt auf dem Homescreen?

und ich habe setCancelable zu falsch gesetzt und es hat succeessfully Benutzer verhindern Schaltfläche drücken zurück.

Das habe ich bisher erreicht und das will ich auch.

Wenn ich jedoch die Home-Taste drücke, ist die App "verschwunden", aber irgendwie erscheint der Dialog immer noch auf dem Home-Bildschirm, und das ist, was ich nicht will.

Was ich erwarte ist, dass die Zurück-Taste nichts tun sollte (das ist, was ich erreicht habe).

und wenn Benutzer auf Home-Taste klicken, sollte die gesamte App einschließlich der Dialog verschwinden. Aber irgendwie, wenn ich nach Hause Schaltfläche klicken noch der Dialog auf dem Startbildschirm erscheint ...

+0

Bitte geben Sie einen Code Ihres alertDialog –

Antwort

1

Dies liegt daran, wenn Sie erstellen die AlertDialog, übergeben Sie wahrscheinlich einen ApplicationContext statt nur Context.

Wenn Sie die Android-Framework-Richtlinie befolgen, sollten Sie in Ihrer Application-Klasse keine UI-Änderungen vornehmen. Tu es in deiner Fragmentaktivität.

So tut dies in Ihrer Aktivitätsklasse:

new AlertDialog.Builder(this) 

oder dies in Ihrem Fragmente:

new AlertDialog.Builder(getContext) 

Dann wird es verschwinden, wenn Ihre Anwendung in den Hintergrund Zustand übergeht.

0

die Sie interessieren,

 myDialog.setOnKeyListener(new DialogInterface.OnKeyListener() { 
      @Override 
      public boolean onKey(DialogInterface dialog1, int keyCode, KeyEvent event) { 
       if (keyCode == KeyEvent.KEYCODE_BACK) { 
        return true; 
       } 
       return false; 
      } 
     }); 
+0

danke. Es hat die Zurück-Taste deaktiviert, aber wenn ich auf die Home-Taste klicke, ist der Dialog irgendwie immer noch auf dem Startbildschirm. – mark

+0

Möchten Sie den Dialog beim Klicken auf die Home-Taste nicht schließen? – user2025187

+0

Ich möchte den Dialog "Verschwinden" auf dem Startbildschirm machen, wenn ich auf die Home-Taste klicke. , aber wenn ich zurück zur App gehe, möchte ich erneut eine Dialogabfrage machen ... genauso wie der Rest der Aktivitäten. – mark

0

Dies wird den Trick: -

dialog.setOnKeyListener(new Dialog.OnKeyListener() { 
     @Override 
     public boolean onKey(DialogInterface dialogs, int keyCode, 
          KeyEvent event) { 

      if (keyCode == KeyEvent.KEYCODE_BACK) { 
       return true; 
      } 
      if (keyCode == KeyEvent.KEYCODE_HOME) { 
       // Do your stuff here... 
       return true; 
      } 
      return false; 
     } 
    }); 
Verwandte Themen