Android(安卓)警报对话框

对话框是一个小窗口,提示用户做出决定或输入其他信息。

在应用程序中的某些时候,如果您想询问用户是否对用户采取的任何特定操作做出是或否的决定,请保持在同一活动中,不更改屏幕,您可以使用警报对话框。

为了创建警报对话框,您需要创建一个 AlertDialogBuilder 对象,该对象是 AlertDiaog 的内部类。其语法如下:

  1. AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this);

现在,您必须使用 AlertDialogBuilder 类的对象设置 yesno 按钮。其语法为:

  1. alertDialogBuilder.setPositiveButton(CharSequence text,
  2. DialogInterface.OnClickListener listener)
  3. alertDialogBuilder.setNegativeButton(CharSequence text,
  4. DialogInterface.OnClickListener listener)

除此之外,您还可以使用构建器类提供的其他函数自定义警报对话框。如下所列:

编号方法类型 & 描述
1

setIcon(Drawable icon)

此方法设置警报对话框的图标。

2

setCancelable(boolean cancel able)

此方法设置对话框是否可以取消的属性。

3

setMessage(CharSequence message)

此方法设置要在警报对话框中显示的消息。

4

setMultiChoiceItems(CharSequence[] items, boolean[] checkedItems, DialogInterface。OnMultiChoiceClickListener listener)

此方法将要在对话框中显示的项目列表设置为内容。监听器将通知所选选项

5

setOnCancelListener(DialogInterface。OnCancelListener onCancelListener)

此方法设置对话框取消时将调用的回调。

6

setTitle(CharSequence title)

此方法将标题设置为显示在对话框中。

在创建和设置对话框构建器之后,您将通过调用构建器类的 create() 方法来创建警报对话框。其语法为:

  1. AlertDialog alertDialog = alertDialogBuilder.create();
  2. alertDialog.show();

这将创建警报对话框并显示在屏幕上。


对话框片段

在进入实例之前,我们需要了解对话框片段。对话框片段是可以在对话框中显示的片段。

  1. public class DialogFragment extends DialogFragment {
  2. @Override
  3. public Dialog onCreateDialog(Bundle savedInstanceState) {
  4. // Use the Builder class for convenient dialog construction
  5. AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
  6. builder.setPositiveButton(R.string.fire, new DialogInterface.OnClickListener() {
  7. public void onClick(DialogInterface dialog, int id) {
  8. toast.makeText(this,"enter a text here",Toast.LENTH_SHORT).show();
  9. }
  10. })
  11. .setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
  12. public void onClick(DialogInterface dialog, int id) {
  13. finish();
  14. });
  15. // Create the AlertDialog object and return it
  16. return builder.create();
  17. }
  18. }
  19. }

列表对话框

它用于在对话框中显示项目列表。例如,用户需要选择一个项目列表,或者需要从多个项目列表中单击一个项目。在这种情况下,我们可以使用列表对话框。

  1. public Dialog onCreateDialog(Bundle savedInstanceState) {
  2. AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
  3. builder.setTitle(Pick a Color)
  4. .setItems(R.array.colors_array, new DialogInterface.OnClickListener() {
  5. public void onClick(DialogInterface dialog, int which) {
  6. // The 'which' argument contains the index position
  7. // of the selected item
  8. }
  9. });
  10. return builder.create();
  11. }

单选列表对话框

它用于将单选列表添加到对话框中。我们可以根据用户选择选中或取消选中。

  1. public Dialog onCreateDialog(Bundle savedInstanceState) {
  2. mSelectedItems = new ArrayList();
  3. AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
  4. builder.setTitle("This is list choice dialog box");
  5. .setMultiChoiceItems(R.array.toppings, null,
  6. new DialogInterface.OnMultiChoiceClickListener() {
  7. @Override
  8. public void onClick(DialogInterface dialog, int which, boolean isChecked) {
  9. if (isChecked) {
  10. // If the user checked the item, add it to the selected items
  11. mSelectedItems.add(which);
  12. }
  13. else if (mSelectedItems.contains(which)) {
  14. // Else, if the item is already in the array, remove it
  15. mSelectedItems.remove(Integer.valueOf(which));
  16. }
  17. }
  18. })
  19. // Set the action buttons
  20. .setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() {
  21. @Override
  22. public void onClick(DialogInterface dialog, int id) {
  23. // User clicked OK, so save the mSelectedItems results somewhere
  24. // or return them to the component that opened the dialog
  25. ...
  26. }
  27. })
  28. .setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
  29. @Override
  30. public void onClick(DialogInterface dialog, int id) {
  31. ...
  32. }
  33. });
  34. return builder.create();
  35. }

实例

下面的示例演示了在 android 中使用 AlertDialog

要实验这个实例,您需要在模拟器或实际设备上运行如下。

步骤描述
1您将使用 Android studio 创建一个 Android 应用程序,并在 com.example.sairamkrishna.myapplication 包下将其命名为 My Application
2修改 src/MainActivity.java 用于添加警报对话框代码以启动对话框的文件。
3修改布局 XML 文件 res/layout/activity_main.xml 添加必要的 GUI 组件。
4无需更改默认字符串常量。Android Studio 会在 values/string.xml 处理默认字符串
5运行应用程序并选择正在运行的android设备,并在其上安装应用程序并验证结果。

这里是修改的 src/MainActivity.java

  1. package com.example.sairamkrishna.myapplication;
  2. import android.app.AlertDialog;
  3. import android.content.DialogInterface;
  4. import android.support.v7.app.ActionBarActivity;
  5. import android.os.Bundle;
  6. import android.view.View;
  7. import android.widget.Toast;
  8. public class MainActivity extends ActionBarActivity {
  9. @Override
  10. protected void onCreate(Bundle savedInstanceState) {
  11. super.onCreate(savedInstanceState);
  12. setContentView(R.layout.activity_main);
  13. }
  14. public void open(View view){
  15. AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this);
  16. alertDialogBuilder.setMessage("Are you sure,
  17. You wanted to make decision");
  18. alertDialogBuilder.setPositiveButton("yes",
  19. new DialogInterface.OnClickListener() {
  20. @Override
  21. public void onClick(DialogInterface arg0, int arg1) {
  22. Toast.makeText(MainActivity.this,"You clicked yes
  23. button",Toast.LENGTH_LONG).show();
  24. }
  25. });
  26. alertDialogBuilder.setNegativeButton("No",new DialogInterface.OnClickListener() {
  27. Override
  28. public void onClick(DialogInterface dialog, int which) {
  29. finish();
  30. }
  31. });
  32. AlertDialog alertDialog = alertDialogBuilder.create();
  33. alertDialog.show();
  34. }
  35. }

这里是修改的 res/layout/activity_main.xml

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <RelativeLayout
  3. xmlns:android="http://schemas.android.com/apk/res/android"
  4. xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
  5. android:layout_height="match_parent"
  6. android:paddingLeft="@dimen/activity_horizontal_margin"
  7. android:paddingRight="@dimen/activity_horizontal_margin"
  8. android:paddingTop="@dimen/activity_vertical_margin"
  9. android:paddingBottom="@dimen/activity_vertical_margin"
  10. tools:context=".MainActivity">
  11. <TextView
  12. android:layout_width="wrap_content"
  13. android:layout_height="wrap_content"
  14. android:text="Alert Dialog"
  15. android:id="@+id/textView"
  16. android:textSize="35dp"
  17. android:layout_alignParentTop="true"
  18. android:layout_centerHorizontal="true" />
  19. <TextView
  20. android:layout_width="wrap_content"
  21. android:layout_height="wrap_content"
  22. android:text="cankaoshouce"
  23. android:id="@+id/textView2"
  24. android:textColor="#ff3eff0f"
  25. android:textSize="35dp"
  26. android:layout_below="@+id/textView"
  27. android:layout_centerHorizontal="true" />
  28. <ImageView
  29. android:layout_width="wrap_content"
  30. android:layout_height="wrap_content"
  31. android:id="@+id/imageView"
  32. android:src="@drawable/abc"
  33. android:layout_below="@+id/textView2"
  34. android:layout_alignRight="@+id/textView2"
  35. android:layout_alignEnd="@+id/textView2"
  36. android:layout_alignLeft="@+id/textView"
  37. android:layout_alignStart="@+id/textView" />
  38. <Button
  39. android:layout_width="wrap_content"
  40. android:layout_height="wrap_content"
  41. android:text="Alert dialog"
  42. android:id="@+id/button"
  43. android:layout_below="@+id/imageView"
  44. android:layout_alignRight="@+id/textView2"
  45. android:layout_alignEnd="@+id/textView2"
  46. android:layout_marginTop="42dp"
  47. android:onClick="open"
  48. android:layout_alignLeft="@+id/imageView"
  49. android:layout_alignStart="@+id/imageView" />
  50. </RelativeLayout>

这里是 Strings.xml

  1. <resources>
  2. <string name="app_name">My Application</string>
  3. </resources>

这是默认的 AndroidManifest.xml

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <manifest xmlns:android="http://schemas.android.com/apk/res/android"
  3. package="com.example.sairamkrishna.myapplication" >
  4. <application
  5. android:allowBackup="true"
  6. android:icon="@drawable/ic_launcher"
  7. android:label="@string/app_name"
  8. android:theme="@style/AppTheme" >
  9. <activity
  10. android:name="com.example.sairamkrishna.myapplication.MainActivity"
  11. android:label="@string/app_name" >
  12. <intent-filter>
  13. <action android:name="android.intent.action.MAIN" />
  14. <category android:name="android.intent.category.LAUNCHER" />
  15. </intent-filter>
  16. </activity>
  17. </application>
  18. </manifest>

让我们尝试运行您的应用程序。我假设你已经将实际的 Android 移动设备与计算机连接。要从 Android studio 运行应用程序,请打开项目的一个活动文件,然后单击工具栏上的运行 Eclipse Eclipse Run Icon 图标。在启动应用程序之前,Android Studio 将显示以下窗口,以选择您想要运行 Android 应用程序的选项。

选择一个选项,然后单击它。例如,如果您单击了 yes 按钮,那么结果如下:

如果单击 no 按钮,它将调用 finish() 并关闭应用程序。