AlertDialog对话框功能是通知用户某些信息,这些信息可以单纯只是一些文字、错误信息或者警告文字,也有可能是系统询问用户的一个问题。然后用户可以通过点击AlertDialog对话框上的按钮来响应。对话框上的按钮和文字可以通过程序来控制,一个AlertDialog对话框最多只能由3个按钮。
AlertDialog的创建有两种方法:(1)利用AlertDialog.Builder类创建 (2).利用AlertDialog类创建
下面是利用AlertDialog.Builder类创建AlertDialog的具体步骤:
AlertDialog.Builder myAlertDialog = new AlertDialog.Builder(MainActivity.this);
//建立一个属于主程序类的AlertDialog.Builder对象
myAlertDialog.setTitle("MyAlertDialog");
//设置对话框的标题
myAlertDialog.setMessage("这里是AlertDialog的提示信息");
//设置对话框的提示信息
myAlertDialog.setIcon(android.R.drawable.ic_dialog_info);
//设置对话框的提示图标,这里的android.R.drawable.ic_dialog_info是系统自带图标
myAlertDialog.setCancelable(false);
//设置用户无法利用返回键取消对话框
/*为对话框添加按钮*/
myAlertDialog.setPositiveButton("是",new DialogInterface.OnClickListener(){
@Override
public void onClick(DialogInterface dialog,int which){
//可以在这里添加按下PositiveButton后要执行的代码
}
}
myAlertDialog.setNegativeButton("否",new DialogInterface.OnClickListener(){
@Override
public void OnClick(DialogInterface dailog,int which){
//可以在这里添加按下NegativeButton后要执行的代码
}
}
myAlertDialog.setNeutralButton("取消",new DialogInterface(){
@Overrider
public void onClick(DialogInterface dialog,int which){
//在这里添加按下NeutralBUtton后要执行的代码
}
}
myAlertDialog.show();/
/显示对话框
下面是程序的源代码:
新建一个MainActivity.java文件,其onCreate()方法中详细代码如下:
public class MainActivity extends Activity {
private Button myButton = null;
private TextView myTextView = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
myButton = (Button)this.findViewById(R.id.mybutton);
myTextView = (TextView)this.findViewById(R.id.mytextview);
myButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
AlertDialog.Builder myAlertDialog = new AlertDialog.Builder(MainActivity.this);
myAlertDialog.setTitle("这是AlertDialog的标题");
myAlertDialog.setMessage("这是AlertDialog的信息");
myAlertDialog.setIcon(android.R.drawable.ic_dialog_alert); //设置对话框的图标
myAlertDialog.setCancelable(false);
myAlertDialog.setPositiveButton("是", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
myTextView.setText("你点击了PositiveButton");
}
});
myAlertDialog.setNegativeButton("否", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface arg0, int arg1) {
myTextView.setText("你点击了NegativeButton");
}
});
myAlertDialog.setNeutralButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface arg0, int arg1) {
myTextView.setText("你点击了NeutralButton");
}
});
myAlertDialog.show();
}
});
}
}
activity_main.xml文件的代码如下: 添加一个文本试图和一个按钮即可
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
xmlns:android=" http://schemas.android.com/apk/res/android">
<Button
android:id="@+id/mybutton"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="显示AlertDialog" />
<TextView
android:id="@+id/mytextview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:text="显示AlertDialog的按钮按下信息"
/>
</LinearLayout>
下面介绍一个如何利用AlertDialog来创建对话框
利用这种方法创建一个AlertDialog与创建其他控件比如Button TextView有着截然的 不同,因为AlertDialog类把建构式定义成protected,所以我们无法直接
产生它的对象。解决的方法是用继承的方法,也就是我们必须新增加一个继承AlertDialog类的子类,然后在该类中建立一个构造方法调用AlertDialog类的构造
方法。
class MyAlertDialog extends AlertDialog{ //创建一个类进程AlertDialog
public MyAlertDialog(Context context) {
super(context);
}
}
public class SubMainActivity extends Activity implements Button.OnClickListener{
private Button myButton = null;
private TextView myTextView = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
myButton = (Button)this.findViewById(R.id.mybutton);
myTextView = (TextView)this.findViewById(R.id.mytextview);
myButton.setOnClickListener(this);
}
public void onClick(View view){
MyAlertDialog myAlertDialog = new MyAlertDialog(this);
myAlertDialog.setTitle("AlertDialog的标题");
myAlertDialog.setMessage("AlertDialog's Information ");
myAlertDialog.setCancelable(false);
DialogInterface.OnClickListener positiveListener = new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface arg0, int arg1) {
myTextView.setText("你点击了PositiveButton");
}
};
DialogInterface.OnClickListener negativeListener = new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface arg0, int arg1) {
myTextView.setText("你点击了NegativeButton");
}
};
DialogInterface.OnClickListener neutralListener = new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface arg0, int arg1) {
myTextView.setText("你点击了NeutralButton");
}
};
myAlertDialog.setButton(AlertDialog.BUTTON_POSITIVE, "YES", positiveListener);
myAlertDialog.setButton(AlertDialog.BUTTON_NEGATIVE, "NO", negativeListener);
myAlertDialog.setButton(AlertDialog.BUTTON_NEUTRAL, "CANCEL", neutralListener);
myAlertDialog.show();
}
}
这里布局文件和上一个布局文件可以共用,新建一个SubMainActivity后,到AndroidManifest.xml中把里面唯一一个
<activity>标签里面的android:name由原来的MainActivity改为SubMainActivity,则启动程序的时候不会运行MainActivity而是直接载入SubMainActivity