AlertDialog的功能很强大,它提供了一些方法来生成预定义对话框
1.带消息,带N个按钮的提示对话框
2.带列表,带N个按钮的列表对话框
3.带多个单选列表项,带N个按钮的对话框
4.带多个多选列表项,带N个按钮的对话框
除此之外,AlertDialog也可创建界面自定义的对话框
使用AlertDialog创建对话框大致按如下步揍进行
1.创建AlertDialog.Buider对象,该对象是AlertDialog的创建器
2.调用AlertDialog.Buider的方法对对话框设置图标,标题,内容等等
3.调用AlertDialog.Buider 的create()方法创建AlertDialog对话框
4.调用AlertDialog的show()方法显示对话框
下面通过几个实例来介绍AlertDialog的使用
本程序的界面比较简单,程序界面上只有一个简单的文本框和一个按钮,当用户单击按钮时会显示普通对话框,由于用户界面十分简单,故此处不再给出界面布局的代码
本程序将通过上面介绍的4步来创建AlertDialog对话框
实例一:显示提示信息的对话框
MainActivity.java代码:
package com.example.dialog;
import android.app.Activity;
import android.app.ActionBar;
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.app.Fragment;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
import android.os.Build;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_first);
Button bn = (Button)findViewById(R.id.bn01);
final Builder builder = new AlertDialog.Builder(this);
//为某按钮绑定事件监听器
bn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View source) {
// TODO Auto-generated method stub
//设置对话框的图标
builder.setIcon(R.drawable.nvren);
//设置对话框标题
builder.setTitle("自定义对话框");
//设置对话框显示的内容
builder.setMessage("一个简单的对话框");
//为按钮设置监听器
builder.setPositiveButton("确定", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
EditText show = (EditText)findViewById(R.id.show);
show.setText("用户单击了确定键");
}
});
builder.setNegativeButton("取消", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
EditText show = (EditText)findViewById(R.id.show);
show.setText("用户单击了取消键");
}
});
builder.create().show();
}
});
}
}
执行结果
示例二:使用AlertDialog创建列表对话框
AlertDialog.Builder除了提供setMessage方法来设置对话框所显示的消息外,还提供了如下方法来设置对话框显示的列表内容。
1.setltems(int itemsId,DialogInteface.onClickListener listener);创建普通列表对话框
2.setMultiChoice.OnMulti Choice ClickListener listener);创建多选列表对话框
3.setSingleChoiceltems(CharSequence[] items,int checkedltem,Dialoglnterface.OnClickListener listener);创建单选列表对话框
4.setAdapter(ListAdapter adapter,Dialotlnterface.OnClickListener listener);创建ListAdapter提供列表项的列表对话框。
下面通过setItems 方法来示范一个普通列表项的对话框,该程序的主界面布局也非常简单,故此处不提供界面布局文件的代码
MainActivity.java
package com.example.dialog;
import android.app.Activity;
import android.app.ActionBar;
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.app.Fragment;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.graphics.Color;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.os.Build;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_first);
Button bn = (Button)findViewById(R.id.bn01);
final Builder b = new AlertDialog.Builder(this);
//为按钮绑定监听事件
bn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
//设置对话框的图标
b.setIcon(R.drawable.nvren);
//设置对话框的标题
b.setTitle("简单列表对话框");
//为对话框设置多个列表
b.setItems(new String[] {"红色","绿色","蓝色"}, new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
//该方法的which参数代表用户单击了那个列表项
TextView show = (TextView)findViewById(R.id.show);
switch(which) {
case 0:
show.setBackgroundColor(Color.RED);
break;
case 1:
show.setBackgroundColor(Color.GREEN);
break;
case 2:
show.setBackgroundColor(Color.BLACK);
break;
}
}
});
b.create().show();
}
});
}
}
运行结果
示例三使用AlertDialog创建单选列表对话框
只要调用AlertDialog.Buider的setSingleChoiceItems方法即可创建一个单选列表的对话框
本例将会使用另一种方式来创建对话框,采用基于Activity回调的方式来开发对话框,步揍如下:
1.重写Activity的onCreateDialog()方法,该方法返回一个对话框,该方法内部一样通过AlertDialog.Builder或DatePickerDialog等创建对话框并返回
2程序需要显示对话框调用Activity的showDialog()方法即可
本例的界面同样简单,故界面布局的代码不写了。
MainActivity.java
package com.example.dialog;
import android.app.Activity;
import android.app.ActionBar;
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.app.Dialog;
import android.app.Fragment;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.graphics.Color;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.os.Build;
public class MainActivity extends Activity {
final int SINGLE_DIALOG = 0x113;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_first);
Button bn = (Button)findViewById(R.id.bn01);
final Builder b = new AlertDialog.Builder(this);
bn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
//显示对话框
showDialog(SINGLE_DIALOG);
}
});
//为按钮绑定监听事件
}
//重写onCreateDialog方法创建对话框
public Dialog onCreateDialog(int id,Bundle state) {
switch(id) {
case SINGLE_DIALOG:
Builder b =new AlertDialog.Builder(this);
//设置对话框的图标
b.setIcon(R.drawable.nvren);
//设置对话框的标题
b.setTitle("单选列表对话框");
//为对话框设置多个列表
b.setSingleChoiceItems(new String[] {"红色","绿色","蓝色"},1,new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
TextView show = (TextView)findViewById(R.id.show);
switch (which) {
case 0:
show.setBackgroundColor(Color.RED);
break;
case 1:
show.setBackgroundColor(Color.RED);
break;
case 2:
show.setBackgroundColor(Color.RED);
break;
}
}
});
b.setPositiveButton("确定",null);
return b.create();
}
return null;
}
}
运行结果
上面的程序重写了Activity的onCreateDialog()方法——该方法返回了一个对话框。当程序调用Activity的showDialog()方法时,onCreateDialog()方法返回的对话框将会被显示出来。运行上面的程序,单击“选择颜色”安妮雅,应用显示如上图所示。
未完待续。。。