it-swarm.com.de

Wie füge ich ein Meldungsfeld mit der Schaltfläche 'OK' hinzu?

Ich möchte ein Meldungsfeld mit einer OK-Schaltfläche anzeigen. Ich habe den folgenden Code verwendet, aber er führt zu einem Kompilierungsfehler mit Argument:

AlertDialog.Builder dlgAlert  = new AlertDialog.Builder(this);
dlgAlert.setMessage("This is an alert with no consequence");
dlgAlert.setTitle("App Title");
dlgAlert.setPositiveButton("OK", null);
dlgAlert.setCancelable(true);
dlgAlert.create().show();

Wie kann ich ein Meldungsfeld in Android anzeigen?

77
Rajkumar Reddy

Ich denke, es könnte ein Problem geben, dass Sie den Klick-Listener für den ok-positiven Button nicht hinzugefügt haben.

dlgAlert.setPositiveButton("Ok",
    new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int which) {
          //dismiss the dialog  
        }
    });
71
Paresh Mayani

Da Sie in Ihrer Situation den Benutzer nur mit einer kurzen und einfachen Nachricht benachrichtigen möchten, würde ein Toast für eine bessere Benutzererfahrung sorgen.

Toast.makeText(getApplicationContext(), "Data saved", Toast.LENGTH_LONG).show();

Update: Anstelle eines Toasts für Material Design-Apps wird jetzt ein Snackbar empfohlen.

Wenn Sie eine längere Nachricht haben, die Sie dem Leser Zeit zum Lesen und Verstehen geben möchten, sollten Sie ein DialogFragment verwenden. (In der Dokumentation wird derzeit empfohlen, Ihr AlertDialog in ein Fragment zu packen, anstatt es direkt aufzurufen.)

Erstellen Sie eine Klasse, die DialogFragment erweitert:

public class MyDialogFragment extends DialogFragment {
    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {

        // Use the Builder class for convenient dialog construction
        AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
        builder.setTitle("App Title");
        builder.setMessage("This is an alert with no consequence");
        builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int id) {
                // You don't have to do anything here if you just 
                // want it dismissed when clicked
            }
        });

        // Create the AlertDialog object and return it
        return builder.create();
    }
}

Rufen Sie es dann an, wenn Sie es für Ihre Aktivität benötigen:

DialogFragment dialog = new MyDialogFragment();
dialog.show(getSupportFragmentManager(), "MyDialogFragmentTag");

Siehe auch

enter image description here

28
Suragch

Der Code wird für mich in Ordnung kompiliert. Möglicherweise haben Sie vergessen, den Import hinzuzufügen:

import Android.app.AlertDialog;

Wie auch immer, du hast ein gutes Tutorial hier .

9
FerranB
@Override
protected Dialog onCreateDialog(int id)
{
    switch(id)
    {
    case 0:
    {               
        return new AlertDialog.Builder(this)
        .setMessage("text here")
        .setPositiveButton("OK", new DialogInterface.OnClickListener() 
        {                   
            @Override
            public void onClick(DialogInterface arg0, int arg1) 
            {
                try
                {

                }//end try
                catch(Exception e)
                {
                    Toast.makeText(getBaseContext(),  "", Toast.LENGTH_LONG).show();
                }//end catch
            }//end onClick()
        }).create();                
    }//end case
  }//end switch
    return null;
}//end onCreateDialog
3
Ndupza