Android:减少处理 AlertDialog 的代码

标签 android android-alertdialog

我是 Java 开发的新手。我正在尝试使用以下代码在 Android 应用程序中实现警报:

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();

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

最佳答案

您可以在包含类中实现 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();
}

关于Android:减少处理 AlertDialog 的代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5500838/

相关文章:

android - 如何更改 Android 对话框边距(到屏幕边缘的距离)?

android - 从警报对话框中删除黑色背景 - Android

android - 从非 UI 线程弹出对话框

自定义 AlertDialog 中 TextView 上的 Android 超链接不可点击

android - dismiss() 应该在 setPositiveButton 或 setNegativeButton 或其他 onClick 中的 onClick 中调用吗?

java - 如何在android中的viewpager上从右到左获取上一个 fragment

android - 如何解决java.lang.NoSuchMethodError : android. widget.AbsListView.isItemChecked

java - 'finally' block 后出现空指针异常

java - 动画完成后如何隐藏进度条

Android Studio 导航编辑器在 fragment 上显示 "Ambiguous type"