1 普通对话框(喜欢,不喜欢,一般)
2 输入“文本”后确定或取消
3 对话框退出功能,确定是否退出
4 带有单选按钮的弹出框使用
5 以列表形式,显示单选列表
6 以复选框的形式,展示的对话框
一、调用各种对话框的按钮xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <Button android:id="@+id/Button01" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="投票选择" > </Button> <Button android:id="@+id/Button02" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="输入确定" > </Button> <Button android:id="@+id/Button03" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="确定退出" > </Button> <Button android:id="@+id/Button04" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="单选按钮组" > </Button> <Button android:id="@+id/Button05" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="单选列表对话框" > </Button> <Button android:id="@+id/Button06" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="复选列表对话框" > </Button> </LinearLayout>
二、Activity的代码
package com.example.fragmentdemo1; import android.app.Activity; import android.app.AlertDialog; import android.app.AlertDialog.Builder; import android.content.Context; import android.content.DialogInterface; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; //对话框测试 //参考 http://blog.csdn.net/andie_guo/article/details/14145135 public class DialogActivity extends Activity { Button btnShowDialog; Button btnShowDialog_Layout; Button quitBtn; Button singleChooseBtn; Button singleChoseListBtn; Button checkboxChoseListBtn; EditText editText; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.dialog); //定义按钮 btnShowDialog=(Button)this.findViewById(R.id.Button01); btnShowDialog.setOnClickListener(new ClickEvent()); btnShowDialog_Layout=(Button)this.findViewById(R.id.Button02); btnShowDialog_Layout.setOnClickListener(new ClickEvent()); quitBtn=(Button)this.findViewById(R.id.Button03); quitBtn.setOnClickListener(new ClickEvent()); singleChooseBtn=(Button)this.findViewById(R.id.Button04); singleChooseBtn.setOnClickListener(new ClickEvent()); singleChoseListBtn=(Button)this.findViewById(R.id.Button05); singleChoseListBtn.setOnClickListener(new ClickEvent()); checkboxChoseListBtn=(Button)this.findViewById(R.id.Button06); checkboxChoseListBtn.setOnClickListener(new ClickEvent()); } //统一处理按键事件 class ClickEvent implements OnClickListener{ @Override public void onClick(View v) { if(v==btnShowDialog) showDialog(DialogActivity.this); else if(v==btnShowDialog_Layout) showDialog_Layout(DialogActivity.this); else if(v==quitBtn){ showDialog_quit(DialogActivity.this); }else if( v==singleChooseBtn){ showDialog_danxuan(DialogActivity.this); }else if(v==singleChoseListBtn ){ show_dialog_list(DialogActivity.this); }else if(v==checkboxChoseListBtn){ show_dialog_checkbox(DialogActivity.this); } } } //显示基本的AlertDialog private void showDialog(Context context) { AlertDialog.Builder builder = new AlertDialog.Builder(context); builder.setIcon(R.drawable.title); builder.setTitle("喜好调查"); builder.setMessage("您喜欢玩植物大战僵尸么?"); builder.setPositiveButton("喜欢", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int whichButton) { setTitle("点击了对话框上的Button1"); Toast.makeText(getApplicationContext(), "点击了喜欢", Toast.LENGTH_SHORT).show(); } }); builder.setNeutralButton("一般", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int whichButton) { setTitle("点击了对话框上的Button2"); Toast.makeText(getApplicationContext(), "点击了对话框上一般", Toast.LENGTH_SHORT).show(); } }); builder.setNegativeButton("不喜欢", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int whichButton) { setTitle("点击了对话框上的Button3"); Toast.makeText(getApplicationContext(), "您点击了不喜欢", Toast.LENGTH_SHORT).show(); } }); builder.show(); } //显示基于Layout的AlertDialog ,有输入框的弹出框 private void showDialog_Layout(Context context) { LayoutInflater inflater = LayoutInflater.from(this); final View textEntryView = inflater.inflate( R.layout.alertdialoglayout, null); final EditText edtInput=(EditText)textEntryView.findViewById(R.id.edtInput); final AlertDialog.Builder builder = new AlertDialog.Builder(context); builder.setCancelable(false); builder.setIcon(R.drawable.title ); builder.setTitle("Title"); //这个用 xml布局 或者直接 new对象 都行 // builder.setView(textEntryView); editText = new EditText(context); builder.setView(editText) ; builder.setPositiveButton("确认", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int whichButton) { setTitle(edtInput.getText()); Toast.makeText(getApplicationContext(), "点击了对话框上取消: "+editText.getText(), Toast.LENGTH_SHORT).show(); } }); builder.setNegativeButton("取消", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int whichButton) { setTitle(""); Toast.makeText(getApplicationContext(), "点击了对话框上取消", Toast.LENGTH_SHORT).show(); } }); builder.show(); } //是否退出对话框的测试 private void showDialog_quit(Context context) { AlertDialog.Builder builder = new Builder(context); builder.setMessage("妖精,确定逃跑么"); builder.setPositiveButton("确定", new AlertDialog.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); //结束当前Activity的生命周期并释放资源 DialogActivity.this.finish(); } }); builder.setNegativeButton("取消", new AlertDialog.OnClickListener(){ @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); } }); builder.create().show(); } //单选按钮对话框 , 数据保存在监听器对象中 private void showDialog_danxuan(Context context) { //单选对话框监听器 final SingleChoiceOnClickListener singleChoiceOnClickListener = new SingleChoiceOnClickListener(); AlertDialog.Builder builder = new AlertDialog.Builder(context); builder.setTitle("单选对话框"); builder.setIcon(R.drawable.title); //R.array.hobby 也可以用下面的 数组代替 //final String[] items = {"java", ".net", "php"}; //1 数组数据 2 第几个被选中 3 点击的监听器 builder.setSingleChoiceItems( R.array.hobby, 0, singleChoiceOnClickListener); //添加一个确定按钮 builder.setPositiveButton("确定", new DialogInterface.OnClickListener(){ public void onClick(DialogInterface dialog, int which) { String[] hoddy=getResources().getStringArray(R.array.hobby); Toast.makeText(getApplicationContext(), "您选择了: "+hoddy[singleChoiceOnClickListener.getWhich()], Toast.LENGTH_SHORT).show(); dialog.dismiss(); } }); builder.create().show(); } //单选的监听器 private class SingleChoiceOnClickListener implements DialogInterface.OnClickListener { private int which = 0; @Override public void onClick(DialogInterface dialogInterface, int which) { Toast.makeText(getApplicationContext(), "您选择了1111: "+which, Toast.LENGTH_SHORT).show(); this.which = which; } public int getWhich() { return which; } } //显示列表对话框 private void show_dialog_list(Context context){ final String[] items = new String[]{"北京","上海","深圳"}; AlertDialog.Builder builder = new AlertDialog.Builder(context); builder.setTitle("列表对话框"); builder.setItems(items, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { Toast.makeText(DialogActivity.this, "您选中了"+items[which], Toast.LENGTH_SHORT ).show(); } }); builder.create().show(); } //显示带有复选框的 对话框 private void show_dialog_checkbox(Context context){ final String[] items = new String[]{"北京","上海","深圳"}; final boolean[] selected = new boolean[]{true,false,true}; AlertDialog.Builder builder = new AlertDialog.Builder(context); builder.setTitle("复选框 对话框"); builder.setMultiChoiceItems(items, selected, new DialogInterface.OnMultiChoiceClickListener() { @Override public void onClick(DialogInterface dialog, int which, boolean isChecked) { selected[which]=isChecked; } }); builder.setPositiveButton("确定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { StringBuffer str = new StringBuffer("您选中了:"); for(int i=0;i<selected.length;i++){ if(selected[i]){ str.append(items[i]+","); } } str.deleteCharAt(str.length()-1); Toast.makeText(DialogActivity.this, str, Toast.LENGTH_SHORT).show(); } }); builder.create().show(); } }
三、array.xml的数据列表
<?xml version="1.0" encoding="utf-8"?> <resources> <string-array name="hobby"> <item>游泳</item> <item>打篮球</item> <item>登山</item> </string-array> </resources>