1. Nimm jetzt an unserem Uhans - 3. ADVENT - Gewinnspiel teil - Alle Informationen findest Du hier!

Einfache Abfrage mit AlertDialog?

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von JensO, 15.02.2012.

  1. JensO, 15.02.2012 #1
    JensO

    JensO Threadstarter Neuer Benutzer

    Beiträge:
    7
    Erhaltene Danke:
    0
    Registriert seit:
    06.09.2011
    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.
     
  2. Fonsi, 15.02.2012 #2
    Fonsi

    Fonsi Erfahrener Benutzer

    Beiträge:
    178
    Erhaltene Danke:
    15
    Registriert seit:
    08.07.2011
    Was meinst du denn genau mit "Abfragen"?
     
  3. strider, 15.02.2012 #3
    strider

    strider Erfahrener Benutzer

    Beiträge:
    208
    Erhaltene Danke:
    45
    Registriert seit:
    30.09.2011
    Phone:
    Nexus S
    Du kannst aus dem OnClickListener ja auch eine Funktion aufrufen, du brauchst nicht den kompletten Code da reinquetschen.
     
  4. Mo3bius, 15.02.2012 #4
    Mo3bius

    Mo3bius Neuer Benutzer

    Beiträge:
    15
    Erhaltene Danke:
    0
    Registriert seit:
    14.11.2011
    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: 15.02.2012
  5. krümelmonster, 16.02.2012 #5
    krümelmonster

    krümelmonster Android-Hilfe.de Mitglied

    Beiträge:
    58
    Erhaltene Danke:
    1
    Registriert seit:
    03.01.2010
    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)
     
  6. JensO, 16.02.2012 #6
    JensO

    JensO Threadstarter Neuer Benutzer

    Beiträge:
    7
    Erhaltene Danke:
    0
    Registriert seit:
    06.09.2011
    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!
     

Diese Seite empfehlen