Android AlertDialog
如果我们要求用户从屏幕上显示的提示中选择一个选项,则可以使用Android AlertDialog。
在本教程中,我们将讨论如何使用一个按钮(确定按钮),两个按钮(是和否)和三个按钮(是,否和取消)创建不同的警报对话框。
Android AlertDialog
以下是我们将在本教程中创建的最终android警报对话框应用程序。
Android AlertDialog是Android应用程序中最重要和最基本的组件之一。
警报对话框用于向用户显示警报,并获得用户的确认。
为了创建一个警报对话框,我们需要创建一个对象" AlertDialogBuilder",该对象是" AlertDialog"的内部类。
其语法如下。
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this);
Android AlertDialog组件
标题:请注意,标题是可选的
内容:将消息显示给用户。
它可以是字符串消息,列表或者自定义布局动作按钮:这些按钮有三种类型。
它们是正,负和中性操作按钮。
一个警报对话框最多可以包含三个操作按钮。
通常,以下是按钮的约定:如果希望用户接受操作,请使用"正向操作"按钮。
通常显示为OK/YES。如果用户想要取消操作,则可以使用"否定操作"按钮(NO)。
如果用户要推迟决策,请使用"中立行动"按钮(稍后)。
现在我们需要使用ʻAlertDialogBuilder`类设置这些按钮的方法。
语法如下。
alertDialogBuilder.setPositiveButton(CharSequence text, DialogInterface.OnClickListener listener); alertDialogBuilder.setNegativeButton(CharSequence text, DialogInterface.OnClickListener listener); alertDialogBuilder.setNeutralButton(CharSequence text, DialogInterface.OnClickListener listener);
第一个参数是要显示的文本。
第二个参数是按下肯定按钮时要调用的侦听器。
AlertDialog函数
除此之外,还有一些功能可用于自定义警报对话框,如下所示。
- setIcon(Drawable icon):此方法设置警报对话框的图标
- setCancelable(boolean cancelable):此方法设置对话框是否可以取消的属性
- setMessage(CharSequence message):此方法设置要在警报对话框中显示的消息
- setMultiChoiceItems(CharSequence [] items,boolean [] checkedItems,DialogInterface.OnMultiChoiceClickListener侦听器):此方法将要在对话框中显示的项目列表设置为内容。
所选选项将由侦听器通知 - setOnCancelListener(DialogInterface.OnCancelListener onCancelListener):此方法设置在取消对话框时将调用的回调
- setTitle(CharSequence title):此方法设置标题显示在对话框中
- getListView():此函数用于获取对话框中使用的列表视图
创建并设置对话框构建器之后,我们需要通过调用构建器类的create()方法来创建警报对话框。
其语法如下所示。
AlertDialog alertDialog = alertDialogBuilder.create(); alertDialog.show();
Android AlertDialog示例项目结构
此应用程序由三个按钮组成,这些按钮可打开包含相应按钮数量的警报对话框。
Android警报对话框项目代码
该应用程序包含一个活动。
活动的布局具有三个按钮,如下面的xml文件所示。
activity_alert.xml
<RelativeLayout xmlns:android="https://schemas.android.com/apk/res/android" xmlns:tools="https://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".AlertActivity" > <Button android:id="@+id/one_button_alert" android:layout_width="200dip" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_marginTop="25dip" android:layout_marginLeft="20dip" android:text="Single Button Alert" <Button android:id="@+id/two_button_alert" android:layout_width="200dip" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_below="@id/one_button_alert" android:layout_marginLeft="20dip" android:text="Two Buttons Alert" <Button android:id="@+id/three_button_alert" android:layout_width="200dip" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_below="@id/two_button_alert" android:layout_marginLeft="20dip" android:text="Three Buttons Alert" </RelativeLayout>
下面给出了ʻAlertActivity.java`。
每次单击按钮都会调用带有不同操作按钮集的警报对话框。
单击动作按钮时,将显示与该动作按钮相对应的Toast。
package com.theitroad.alertdialog; import android.app.Activity; import android.app.AlertDialog; import android.content.DialogInterface; import android.os.Bundle; import android.view.Menu; import android.view.View; import android.widget.Button; import android.widget.Toast; public class AlertActivity extends Activity { private Button button1; private Button button2; private Button button3; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_alert); button1 = (Button) findViewById(R.id.one_button_alert); button2 = (Button) findViewById(R.id.two_button_alert); button3 = (Button) findViewById(R.id.three_button_alert); button1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { AlertDialog.Builder builder = new AlertDialog.Builder( AlertActivity.this); builder.setTitle("Sample Alert"); builder.setMessage("One Action Button Alert"); builder.setPositiveButton("OK", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { Toast.makeText(getApplicationContext(),"Yes is clicked",Toast.LENGTH_LONG).show(); } }); builder.show(); } }); button2.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { AlertDialog.Builder builder = new AlertDialog.Builder( AlertActivity.this); builder.setTitle("Sample Alert"); builder.setMessage("Two Action Buttons Alert Dialog"); builder.setNegativeButton("NO", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { Toast.makeText(getApplicationContext(),"No is clicked",Toast.LENGTH_LONG).show(); } }); builder.setPositiveButton("YES", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { Toast.makeText(getApplicationContext(),"Yes is clicked",Toast.LENGTH_LONG).show(); } }); builder.show(); } }); button3.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { AlertDialog.Builder builder = new AlertDialog.Builder( AlertActivity.this); builder.setTitle("Sample Alert"); builder.setMessage("Three Action Buttons Alert Dialog"); builder.setNegativeButton("NO", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { Toast.makeText(getApplicationContext(),"No is clicked",Toast.LENGTH_LONG).show(); } }); builder.setPositiveButton("YES", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { Toast.makeText(getApplicationContext(),"Yes is clicked",Toast.LENGTH_LONG).show(); } }); builder.setNeutralButton("CANCEL", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { Toast.makeText(getApplicationContext(),"Cancel is clicked",Toast.LENGTH_LONG).show(); } }); builder.show(); } }); } @Override public boolean onCreateOptionsMenu(Menu menu) { //Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.menu_main, menu); return true; } }