对话框类似于Acitivity,可以在对话框中添加布局和Widget,对话框有两种:AlertDialog&ProgressDialog。
AlertDialog
AlertDialog是protect类型,无法使用new AlertDialog()创建,必须使用AlertDialog.builder()创建。同时,可以使用showDialog(int id)和dismissDialog(int id)是对话框显示和消失。
实现简单的对话框
调用showDialog()方法时,系统会回调onCreateDialog(int id)方法。设置属性包括:标题,消息,图片,“确定”按钮
public class MainActivity extends Activity {
public final int Dialog_1=1;
@SuppressWarnings("deprecation")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
showDialog(Dialog_1);
//showDialog2();
}
protected Dialog onCreateDialog(int id){
switch(id){
case Dialog_1:
return new AlertDialog.Builder(MainActivity.this).setTitle("DIALOG_1").setMessage("dialog1").
setIcon(android.R.drawable.ic_dialog_info).setNegativeButton("cancel", null).
setPositiveButton("confirm", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO 自动生成的方法存根
showDialog2();
}
}).create();//不要忘记调用create()是之生效
default:
return null;
}
}
对话框是单选框和多选框
单选框关键方法是:setSingleChoiceItems(new String[] {“Item1”, “Item2”},int checkedItem, OnClickListener listenter)
如果是多选框,方法是:setMultiChoiceItems(new String[] {“Item1”, “Item2”},boolean[] checkedItems, OnMultiChoiceClickListener listenter)
注意:setMessage()和setSingleChoiceItems()是显示在同一个地方,同时使用会覆盖掉。只会显示一个。要同时显示message和列表,可采用下面的View来实现。
protected void showDialog2() {
// TODO 自动生成的方法存根
new AlertDialog.Builder(this).setTitle("DIALOG_2").setIcon(android.R.drawable.ic_dialog_info).
setSingleChoiceItems(new String[] {"Item1", "Item2"},0, null).setNegativeButton("cancel", null).setPositiveButton("confirm", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO 自动生成的方法存根
showDialog3();
}
}).show();
}
该方法最后直接调用的show,可在按钮触发事件时直接调用,也可以直接子啊OnCreate()方法中调用showDialog2()。
对话框中显示View,(示例ListView)
在对话框中显示listview,其适配器adapter中的属性配置有所不同,
SimpleAdapter adapter=new SimpleAdapter(this, listItem, android.R.layout.select_dialog_item, new String[]{"ItemName"}, new int[]{android.R.id.text1});
因为是在对话框下显示,其布局文件要用android类下的系统布局资源和资源id。即:andrid.R.layout.select_dialog_item。
如果view是多选框, 布局文件使用:android.R.layout.select_dialog_multichoice, 还需要设置m_ListView.setChoiceMode(m_ListView.CHOICE_MODE_MULTIPLE);默认情况下是单选框模式。
protected void showDialog3() {
// TODO 自动生成的方法存根
ArrayList<HashMap<String, String>> listItem=new ArrayList<HashMap<String,String>>();
HashMap<String, String> map1=new HashMap<String,String>();
map1.put("ItemName", "add");
HashMap<String, String> map2=new HashMap<String,String>();
map2.put("ItemName", "delete");
HashMap<String, String> map3=new HashMap<String,String>();
map3.put("ItemName", "exit");
listItem.add(map1);
listItem.add(map2);
listItem.add(map3);
SimpleAdapter adapter=new SimpleAdapter(this, listItem, android.R.layout.select_dialog_multichoice, new String[]{"ItemName"}, new int[]{android.R.id.text1});
ListView m_ListView=new ListView(this);
m_ListView.setAdapter(adapter);
m_ListView.setChoiceMode(m_ListView.CHOICE_MODE_MULTIPLE);
new AlertDialog.Builder(this).setTitle("DIALOD_4").setMessage("wo de zi ding yi").setIcon(android.R.drawable.ic_dialog_info).setPositiveButton("confirm", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO 自动生成的方法存根
showDialog4();
}
}).setNegativeButton("cancel", null).setView(m_ListView).create().show();
}
ProgressDialog
protected void showDialog4() {
// TODO 自动生成的方法存根
ProgressDialog dialog=new ProgressDialog(this);
dialog.setMessage("dialog6");
dialog.setCancelable(true);
dialog.show();
}