390 Stimmen

Wie zeigt man ein Ja/Nein-Dialogfeld auf Android an?

Ja, ich weiß, es gibt AlertDialog.Builder, aber ich bin schockiert zu wissen, wie schwierig (na ja, zumindest nicht Programmierer-freundlich), um einen Dialog in Android anzuzeigen.

Ich war früher ein .NET-Entwickler und frage mich, ob es ein Android-Äquivalent zu den folgenden Funktionen gibt?

if (MessageBox.Show("Sure?", "", MessageBoxButtons.YesNo) == DialogResult.Yes){
    // Do something...
}

796voto

Steve Haley Punkte 54674

AlertDialog.Builder ist wirklich nicht so schwer zu bedienen. Es ist ein bisschen einschüchternd auf den ersten sicher, aber wenn Sie es ein bisschen verwendet haben, ist es sowohl einfach und leistungsstark. Ich weiß, Sie haben gesagt, dass Sie wissen, wie man es benutzt, aber hier ist trotzdem ein einfaches Beispiel:

DialogInterface.OnClickListener dialogClickListener = new DialogInterface.OnClickListener() {
    @Override
    public void onClick(DialogInterface dialog, int which) {
        switch (which){
        case DialogInterface.BUTTON_POSITIVE:
            //Yes button clicked
            break;

        case DialogInterface.BUTTON_NEGATIVE:
            //No button clicked
            break;
        }
    }
};

AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setMessage("Are you sure?").setPositiveButton("Yes", dialogClickListener)
    .setNegativeButton("No", dialogClickListener).show();

Sie können das auch wiederverwenden DialogInterface.OnClickListener wenn Sie andere ja/nein Boxen, die das Gleiche bewirken sollen.

Wenn Sie den Dialog aus einer View.OnClickListener können Sie verwenden view.getContext() um den Kontext zu erhalten. Alternativ können Sie verwenden yourFragmentName.getActivity() .

186voto

nikki Punkte 3158

Versuchen Sie dies:

AlertDialog.Builder builder = new AlertDialog.Builder(this);

builder.setTitle("Confirm");
builder.setMessage("Are you sure?");

builder.setPositiveButton("YES", new DialogInterface.OnClickListener() {

    public void onClick(DialogInterface dialog, int which) {
        // Do nothing but close the dialog

        dialog.dismiss();
    }
});

builder.setNegativeButton("NO", new DialogInterface.OnClickListener() {

    @Override
    public void onClick(DialogInterface dialog, int which) {

        // Do nothing
        dialog.dismiss();
    }
});

AlertDialog alert = builder.create();
alert.show();

35voto

Erich Douglass Punkte 51004

Steve H's Antwort ist genau richtig, aber hier ist ein bisschen mehr Information: der Grund, dass Dialoge so funktionieren, wie sie es tun, ist, weil Dialoge in Android asynchron sind (die Ausführung stoppt nicht, wenn der Dialog angezeigt wird). Aus diesem Grund müssen Sie einen Rückruf verwenden, um die Auswahl des Benutzers zu behandeln.

In dieser Frage finden Sie eine längere Diskussion über die Unterschiede zwischen Android und .NET (in Bezug auf Dialoge): Dialoge / AlertDialogs: Wie kann man die Ausführung "blockieren", während der Dialog läuft (.NET-Stil)

14voto

hash Punkte 5146

Das funktioniert bei mir:

AlertDialog.Builder builder = new AlertDialog.Builder(getApplicationContext());

    builder.setTitle("Confirm");
    builder.setMessage("Are you sure?");

    builder.setPositiveButton("YES", new DialogInterface.OnClickListener() {

        public void onClick(DialogInterface dialog, int which) {

            // Do nothing, but close the dialog
            dialog.dismiss();
        }
    });

    builder.setNegativeButton("NO", new DialogInterface.OnClickListener() {

        @Override
        public void onClick(DialogInterface dialog, int which) {

            // Do nothing
            dialog.dismiss();
        }
    });

    AlertDialog alert = builder.create();
    alert.show();

10voto

Zar E Ahmer Punkte 32557

Eine Person fragen, ob sie anrufen will oder nicht Dialog..

import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ImageView;
import android.widget.Toast;

public class Firstclass extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {    
        super.onCreate(savedInstanceState);    
        setContentView(R.layout.first);

        ImageView imageViewCall = (ImageView) findViewById(R.id.ring_mig);

        imageViewCall.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v){
                try{
                    showDialog("0728570527");
                } catch (Exception e){
                    e.printStackTrace();
                }                   
            }    
        });    
    }

    public void showDialog(final String phone) throws Exception {
        AlertDialog.Builder builder = new AlertDialog.Builder(Firstclass.this);

        builder.setMessage("Ring: " + phone);       

        builder.setPositiveButton("Ring", new DialogInterface.OnClickListener(){
            @Override
            public void onClick(DialogInterface dialog, int which){

                Intent callIntent = new Intent(Intent.ACTION_DIAL);// (Intent.ACTION_CALL);                 
                callIntent.setData(Uri.parse("tel:" + phone));
                startActivity(callIntent);

                dialog.dismiss();
            }
        });

        builder.setNegativeButton("Abort", new DialogInterface.OnClickListener(){   
            @Override
            public void onClick(DialogInterface dialog, int which){
                dialog.dismiss();
            }
        });         
        builder.show();
    }    
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X