2017-10-24 3 views
2

Ich habe jetzt für ca. 3 Wochen mit Android Studio zu lernen und zu spielen versucht. Ich kam gerade zu einer Situation, in der sich AlertDialogue beim Klicken auf den positiven Knopf nicht ablehnt.Alertdialog nicht entlassen, tippen Sie nimmt zweimal schließen

private void showGPSDisabledAlertToUser() { 
    AlertDialog.Builder builder; 
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { 
     builder = new AlertDialog.Builder(this, android.R.style.Theme_Material_Dialog_Alert); 
    } else { 
     builder = new AlertDialog.Builder(this); 
    } 

    builder.setTitle("Turn On Location/GPS"); 
    builder.setCancelable(false); 
    builder.setMessage("Application Needs To Determine Device's Physical Location."); 
    builder.setPositiveButton("YES, TURN ON", new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog, int which) { 
        dialog.dismiss(); // This ain't working 
        goToInternetSettings(); 
       } 
      }); 
    builder.setNegativeButton("NO, CANCEL", new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog, int which) { 
        closeApplication(); 
       } 
      }); 
    builder.create().show(); 
} 

private void goToInternetSettings() { 
    Intent gpsSetting = new Intent(android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS); 
    startActivity(gpsSetting); 
} 

private void closeApplication() { 
    Intent intent = new Intent(Intent.ACTION_MAIN); 
    intent.addCategory(Intent.CATEGORY_HOME); 
    startActivity(intent); 
} 

Es sieht aus wie ich nur in der Lage bin, den Dialog zu schließen, wenn ich auf positive verdoppeln müssen.

Auf der anderen Seite, mit negativer Taste gibt es keine solche Schwierigkeiten. Ich schätze, da die negative Schaltfläche die gesamte Anwendung herunterfährt, und daher dieses Problem behebt, wäre es anders gewesen.

Antwort

1

Sie müssen das Warndialogfeld nicht explizit durch Aufrufen von dialog.dismiss(); innerhalb der onClick-Methode der Dialogschnittstellenknöpfe schließen.

Der Dialog wird automatisch geschlossen, sobald Sie eine dieser Schaltflächen klicken.

Wenn Sie das Dialog doch sagen, ist nicht weg, nachdem Sie auf die Schaltfläche klicken, haben Sie so mehrere Dialoge erstellt, dass auch ein Dialog geschlossen wird, eine andere ist immer noch da.

+0

Dank für Informationen .. Aber in diesem Fall schließt es Dialog nicht von selbst. Nachdem er von Einstellungen Rückkehr bleibt Dialog offen .. – Sebastian

+0

Sie könnten die Methode '' showGPSDisabledAlertToUser bei einer gleichzeitig zweimal() aufgerufen haben. –

1

Sie müssen nicht dialog.dismiss() innerhalb setPositiveButton() OnClickListener aufrufen, weil es implizit aufgerufen wird.

Sie rufen wahrscheinlich die showGPSDisabledAlertToUser() mehrere Male, wenn die GPS-Verfügbarkeit zu überprüfen. Sie können versuchen, das Dialogfeld einmal zu erstellen und es erneut mit etwas wie diesem zu zeigen:

Verwandte Themen