Android:减少处理AlertDialog的代码

Cri*_*ris 3 android android-alertdialog

我对java开发很新...我正在尝试使用以下代码在Android应用程序中实现Alert ...

        AlertDialog.Builder alert=new AlertDialog.Builder(this);
        alert.setMessage("I'm a multi-button alert :-)");
        alert.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int which) {
                // TODO Auto-generated method stub
                Toast.makeText(getApplicationContext(), 
                    "OK",
                    Toast.LENGTH_LONG)
                    .show();
            }
        });
        alert.setNegativeButton("No", new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int which) {
                // TODO Auto-generated method stub
                Toast.makeText(getApplicationContext(), 
                    "KO",
                    Toast.LENGTH_LONG)
                    .show();
            }
        });
        alert.setNeutralButton("Cancel", new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int which) {
                // TODO Auto-generated method stub
                Toast.makeText(getApplicationContext(), 
                    "CANCEL",
                    Toast.LENGTH_LONG)
                    .show();
            }
        });
        alert.show();
Run Code Online (Sandbox Code Playgroud)

它运行,但我想避免,对于每个按钮,新的DialogInterface.OnClickListener ...通过指向处理单击按钮的单个函数.我认为这是可能的,但我不知道如何,任何人都可以帮助我吗?

在此先感谢c.

kgi*_*kis 11

您可以在包含类中实现DialogInterface.OnClickListener并监视which参数以查看单击了哪个按钮.

alert.setPositiveButton("Ok", this);
alert.setNegativeButton("No", this);
alert.setNeutralButton("Cancel", this);

public void onClick(DialogInterface dialog, int which) {
    String text = "";

    switch (which)
    {
        case DialogInterface.BUTTON_NEGATIVE:
            text = "Cancel";
    }

    Toast.makeText(getApplicationContext(), 
        text,
        Toast.LENGTH_LONG)
        .show();
}
Run Code Online (Sandbox Code Playgroud)