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;
}
}

