Android Alert Dialog with one, two, and three buttons
我不经常发出警报,但每次我这样做都需要一段时间来阅读文档并弄清楚如何去做。 由于我现在必须这样做几次,我将在下面写下一个答案,我将来可以回来。 具体来说,我想比较基本代码
- 一键(OK)
- 两个按钮(确定和取消)
- 三个按钮(正面,负面,其他)
将这三种常见警报类型的基本代码放在一个位置以便将来进行简单参考和修改将会很不错。 这个问题询问如何为一个按钮执行此操作。
我在下面添加我的答案。
一键
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | 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(); } } |
两个按钮
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | 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(); } } |
三个按钮
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | 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(); } } |
如果按钮文本太长而不能全部水平放置,那么它将自动布局在三个按钮的垂直列中。
处理按钮单击
在上面的例子中,
1 2 3 4 5 6 7 8 | builder.setPositiveButton("Launch missile", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // do something like... launchMissile(); } }); |
继续
您可以制作更多种类的对话框。请参阅文档以获取相关帮助。
由于
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | 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(); } } |
有关单选按钮列表和复选框列表的类似示例,请参阅此答案。
笔记
- 使用字符串资源而不是硬编码字符串。
-
您可以将所有内容包装在扩展
DialogFragment 的类中,以便轻松重用对话框。 (见帮助。) -
这些示例使用支持库来支持API 11之前的版本。因此导入应该是
1import android.support.v7.app.AlertDialog; -
为简洁起见,我在上面的例子中省略了
onCreate 方法。那里没什么特别的。
也可以看看
- 如何禁用正面按钮
- 对于短消息,请使用Toast而不是Alert
- 单选列表,单选按钮列表和复选框列表
- 如何实现自定义AlertDialog视图