Einfache Abfrage mit AlertDialog?

J

JensO

Neues Mitglied
0
Hallo,
ich habe ein funktionierendes Programm, in dem einige Berechnungen durchgeführt werden. Jetzt muss ich vor den Berechnungen zwei Abfragen einbauen. AlertDialog.Builder funktioniert nicht so einfach, da nach Anzeige des Dialog ja gleich weitergemacht wird, und wenn ich alles in den OnClickListener reinschreibe, wird es etwas kompliziert und unübersichtlich.
Gibt es einen einfacheren Weg, um eine einfach Abfrage (2 Optionen) zu realisieren?

Vielen Dank
J.
 
Was meinst du denn genau mit "Abfragen"?
 
Du kannst aus dem OnClickListener ja auch eine Funktion aufrufen, du brauchst nicht den kompletten Code da reinquetschen.
 
Wie wärs mit sowas?

Code:
dialog = new Dialog(ShareMoneyIndex.this);
            dialog.setContentView(R.layout.start_dialog);
            dialog.setTitle(ShareMoneyIndex.this.getString(R.string.app_name));
            dialog.setCancelable(true);
            dialog.show();
mit

Code:
            Button button1 = (Button) dialog
                    .findViewById(R.id.dialog_1);
            closeDialog.setOnClickListener(new OnClickListener() {

                public void onClick(View v) {
                    //TODO function1()
                    dialog.dismiss();
                }
            });

            Button button2 = (Button) dialog
                    .findViewById(R.id.dialog_2);
            closeDialog.setOnClickListener(new OnClickListener() {

                public void onClick(View v) {
                    //TODO function2()
                    dialog.dismiss();
                }
            });
Du brauchst dann nur noch eine Layout-Datei. Hier layout.start_dialog.xml

Meintest du sowas?
 
Zuletzt bearbeitet:
Brauchst du vielleicht ein Dialog, den du leicht erzeugen kannst und den Buttons immer andere Funktionalität geben willst? Was hälst du von sowas?
Code:
/**
 * Creates a dialog with a message and Yes/No buttons.
 * @param activity the activity
 * @param title the title of the dialog
 * @param message the message to show
 * @param yesClicked the code to execute if Yes button is pressed, can be <code>null</code>
 * @param noClicked the code to execute if No button is pressed, can be <code>null</code>
 * @return the dialog
 */
public static AlertDialog createYesNoDialog(Activity activity, String title, String message, final Runnable yesClicked, final Runnable noClicked) {
	AlertDialog.Builder builder = new AlertDialog.Builder(activity);
	builder.setMessage(message)
		 .setCancelable(false)
		 .setTitle(title)
	         .setPositiveButton("Ja", new DialogInterface.OnClickListener() {
		         public void onClick(DialogInterface dialog, int id) {
		              dialog.dismiss();
		              if (yesClicked != null) {
		                  yesClicked.run();
		              }
		         }
		 })
		 .setNegativeButton("Nein", new DialogInterface.OnClickListener() {
	               public void onClick(DialogInterface dialog, int id) {
	                    dialog.dismiss();
	                    if (noClicked != null) {
	                	noClicked.run();
	                   }
	               }
	       });
	AlertDialog alert = builder.create();
	return alert;
}

Den kannst du dann folgendermaßen erzeugen und Code übergeben:
Code:
Runnable yesRunnable = new Runnable() {
	public void run() {
		// Code ausführen, wenn auf "Ja" geklickt wurde
	}
};
Runnable noRunnable = new Runnable() {
	public void run() {
		// Code ausführen, wenn auf "Nein" geklickt wurde
	}
};
AlertDialog alert = createYesNoDialog(this, "Dialogtitel hier einfügen", "Dialogtext hier einfügen", yesRunnable , noRunnable);
alert.show();
(beim Code einfügen ist die Formatierung etwas kaputt gegangen, aber ich hoffe man kanns erkennen)
 
Ich dachte eigentlich, dass ich durch Auswahldialog eine Variable setze, die in der dann folgenden Berechnung benutze. Ich habe es jetzt so gemacht, wie strider es vorgeschlagen hat: Code ausgelagert, und im Listener mit unterschiedlichen Parametern aufgerufen.
Vielen Dank für Eure Hilfe!
 

Ähnliche Themen

J
  • Juleru
Antworten
8
Aufrufe
494
Juleru
J
B
Antworten
3
Aufrufe
1.305
swa00
swa00
R
  • Gesperrt
  • roland-senior
Antworten
2
Aufrufe
796
Fulano
Fulano
Zurück
Oben Unten