带有一个、两个和三个按钮的 Android 警报对话框 [英] Android Alert Dialog with one, two, and three buttons

查看:26
本文介绍了带有一个、两个和三个按钮的 Android 警报对话框的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我不经常发出警报,但每次我都会花一些时间阅读

import android.support.v7.app.AlertDialog;公共类 MainActivity 扩展 AppCompatActivity {公共无效 showAlertDialogBu​​ttonClicked(查看视图){//设置警报构建器AlertDialog.Builder builder = new AlertDialog.Builder(this);builder.setTitle("我的标题");builder.setMessage("这是我的消息.");//添加一个按钮builder.setPositiveButton("OK", null);//创建并显示警报对话框AlertDialog 对话框 = builder.create();对话框显示();}}

两个按钮

公共类 MainActivity 扩展 AppCompatActivity {公共无效 showAlertDialogBu​​ttonClicked(查看视图){//设置警报构建器AlertDialog.Builder builder = new AlertDialog.Builder(this);builder.setTitle("AlertDialog");builder.setMessage("你想继续学习如何使用Android警报吗?");//添加按钮builder.setPositiveButton("继续", null);builder.setNegativeButton("取消", null);//创建并显示警报对话框AlertDialog 对话框 = builder.create();对话框显示();}}

三个按钮

公共类 MainActivity 扩展 AppCompatActivity {公共无效 showAlertDialogBu​​ttonClicked(查看视图){//设置警报构建器AlertDialog.Builder builder = new AlertDialog.Builder(this);builder.setTitle("通知");builder.setMessage("发射这枚导弹将摧毁整个宇宙.这是你打算做的吗?");//添加按钮builder.setPositiveButton("发射导弹", null);builder.setNeutralButton("稍后提醒我", null);builder.setNegativeButton("取消", null);//创建并显示警报对话框AlertDialog 对话框 = builder.create();对话框显示();}}

如果按钮文本太长而无法全部水平放置,那么它将自动排列在三个按钮的垂直列中.

处理按钮点击

OnClickListener 在上面的例子中是 null.您可以将 null 替换为侦听器,以便在用户点击按钮时执行某些操作.例如:

builder.setPositiveButton("发射导弹", new DialogInterface.OnClickListener() {@覆盖public void onClick(DialogInterface dialog, int which) {//做一些像...发射导弹();}});

继续

您可以制作更多种类的对话.有关这方面的帮助,请参阅

公共类 MainActivity 扩展 AppCompatActivity {公共无效 showAlertDialogBu​​ttonClicked(查看视图){//设置警报构建器AlertDialog.Builder builder = new AlertDialog.Builder(this);builder.setTitle("选择一种动物");//添加一个列表String[] 动物 = {"horse", "cow", "camel", "sheep", "goat"};builder.setItems(animals, new DialogInterface.OnClickListener() {@覆盖public void onClick(DialogInterface dialog, int which) {开关(哪个){case 0://马案例 1://牛案例 2://骆驼案例 3://羊案例 4://山羊}}});//创建并显示警报对话框AlertDialog 对话框 = builder.create();对话框显示();}}

有关单选按钮列表和复选框列表的类似示例,请参阅此答案.

注意事项

  • 使用字符串资源而不是硬编码的字符串.
  • 您可以将所有内容包装在一个扩展 DialogFragment 的类中,以便轻松重用对话框.(有关帮助,请参阅this.)
  • 这些示例使用支持库来支持 API 11 之前的版本.因此导入应该是

    import android.support.v7.app.AlertDialog;

  • 为简洁起见,我在上面的示例中省略了 onCreate 方法.那里没有什么特别的.

另见

I don't make alerts very often but every time I do it takes me a while to read through the documentation and figure out how to do it. Since I have had to do this a few times now, I am going to write an answer below that I can come back to in the future. Specifically I want to compare the basic code for

  • One button (OK)
  • Two buttons (OK and Cancel)
  • Three buttons (Positive, Negative, Other)

It would be nice to have the basic code for these three common alert types in one spot for easy reference and modification in the future. This question asks how to do it for one button.

解决方案

One button

import android.support.v7.app.AlertDialog;

public class MainActivity extends AppCompatActivity {

    public void showAlertDialogButtonClicked(View view) {

        // setup the alert builder
        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setTitle("My title");
        builder.setMessage("This is my message.");

        // add a button
        builder.setPositiveButton("OK", null);

        // create and show the alert dialog
        AlertDialog dialog = builder.create();
        dialog.show();
    }
}

Two buttons

public class MainActivity extends AppCompatActivity {

    public void showAlertDialogButtonClicked(View view) {

        // setup the alert builder
        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setTitle("AlertDialog");
        builder.setMessage("Would you like to continue learning how to use Android alerts?");

        // add the buttons
        builder.setPositiveButton("Continue", null);
        builder.setNegativeButton("Cancel", null);

        // create and show the alert dialog
        AlertDialog dialog = builder.create();
        dialog.show();
    }
}

Three buttons

public class MainActivity extends AppCompatActivity {

    public void showAlertDialogButtonClicked(View view) {

        // setup the alert builder
        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setTitle("Notice");
        builder.setMessage("Launching this missile will destroy the entire universe. Is this what you intended to do?");

        // add the buttons
        builder.setPositiveButton("Launch missile", null);
        builder.setNeutralButton("Remind me later", null);
        builder.setNegativeButton("Cancel", null);

        // create and show the alert dialog
        AlertDialog dialog = builder.create();
        dialog.show();
    }
}

If the button text it too long to all fit horizontally, then it will automatically get laid out in a vertical column of three buttons.

Handling Button Clicks

The OnClickListener was null in the above examples. You can replace null with a listener to do something when the user taps a button. For example:

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

        // do something like...
        launchMissile();
    }
});

Going On

There are many more varieties of dialogs that you can make. See the documentation for help with this.

Since only three buttons are supported in an AlertDialog, here is an example of a dialog with a list.

public class MainActivity extends AppCompatActivity {

    public void showAlertDialogButtonClicked(View view) {

        // setup the alert builder
        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setTitle("Choose an animal");

        // add a list
        String[] animals = {"horse", "cow", "camel", "sheep", "goat"};
        builder.setItems(animals, new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                switch (which) {
                    case 0: // horse
                    case 1: // cow
                    case 2: // camel
                    case 3: // sheep
                    case 4: // goat
                }
            }
        });

        // create and show the alert dialog
        AlertDialog dialog = builder.create();
        dialog.show();
    }
}

See this answer for similar examples of a radio button list and a checkbox list.

Notes

  • Use string resources rather than hard coded strings.
  • You can wrap everything in a class that extends DialogFragment for easy reuse of a dialog. (See this for help.)
  • These examples used the support library to support versions prior to API 11. So the import should be

    import android.support.v7.app.AlertDialog;
    

  • I omitted the onCreate method in the examples above for brevity. There was nothing special there.

See also

这篇关于带有一个、两个和三个按钮的 Android 警报对话框的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆