Android Dev-Guide 推荐重写Activity.onCreateDialog()方法来创建Dialog,这样Dialog就归属于这个Activity了。使用方法是这样的,Activity.showDialog()激发Activity.onCreateDialog()创建Dialog,然后显示之,便于多个Dialog的统一管理。注意,以后再用Activity.showDialog()显示同一个Dialog时,则不会调用Activity.onCreateDialog(),而是调用Activity.onPrepareDialog(),使用上一次显示Dialog时的状态。即
第一次:showDialog() -> onCreatedialog()
以后: showDialog() -> onPrepareDialog()
在示例代码中,分别用createExitDialog(),createListDialog(),createRadioDialog(),createCheckboxDialog(),创建4种Dialog,并在Activity中显示。示例代码如下:
第一次:showDialog() -> onCreatedialog()
以后: showDialog() -> onPrepareDialog()
在示例代码中,分别用createExitDialog(),createListDialog(),createRadioDialog(),createCheckboxDialog(),创建4种Dialog,并在Activity中显示。示例代码如下:
- packagecom.ipjmc.dialog;
- importandroid.app.Activity;
- importandroid.app.AlertDialog;
- importandroid.app.Dialog;
- importandroid.content.DialogInterface;
- importandroid.os.Bundle;
- importandroid.util.Log;
- importandroid.widget.Toast;
- publicclassShowDialogActivityextendsActivity{
- /**Calledwhentheactivityisfirstcreated.*/
- publicstaticfinalStringTAG="ShowDialog";
- publicstaticfinalintID_EXIT_DIALOG=1;
- publicstaticfinalintID_LIST_DIALOG=2;
- publicstaticfinalintID_RADIO_DIALOG=3;
- publicstaticfinalintID_CHECKBOX_DIALOG=4;
- @Override
- publicvoidonCreate(BundlesavedInstanceState){
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- showDialog(ID_EXIT_DIALOG);
- showDialog(ID_LIST_DIALOG);
- showDialog(ID_RADIO_DIALOG);
- showDialog(ID_CHECKBOX_DIALOG);
- }
- @Override
- protectedDialogonCreateDialog(intid){
- //TODOAuto-generatedmethodstub
- Dialogdialog=null;
- switch(id){
- caseID_EXIT_DIALOG:
- dialog=createExitDialog();
- break;
- caseID_LIST_DIALOG:
- dialog=createListDialog();
- break;
- caseID_RADIO_DIALOG:
- dialog=createRadioDialog();
- break;
- caseID_CHECKBOX_DIALOG:
- dialog=createCheckboxDialog();
- break;
- default:
- break;
- }
- if(dialog!=null){
- Log.i(TAG,dialog.toString());
- }else{
- Log.i(TAG,"dialog=null");
- }
- returndialog;
- }
- @Override
- protectedvoidonPrepareDialog(intid,Dialogdialog){
- //TODOAuto-generatedmethodstub
- super.onPrepareDialog(id,dialog);
- }
- //创建简单Dialog
- publicDialogcreateExitDialog(){
- AlertDialog.Builderbuilder=newAlertDialog.Builder(this);
- builder.setMessage("Areyousureyouwanttoexit?")
- .setCancelable(false)
- .setPositiveButton("Yes",newDialogInterface.OnClickListener(){
- publicvoidonClick(DialogInterfacedialog,intid){
- ShowDialogActivity.this.finish();
- }
- })
- .setNegativeButton("No",newDialogInterface.OnClickListener(){
- publicvoidonClick(DialogInterfacedialog,intid){
- dialog.cancel();
- }
- });
- returnbuilder.create();
- }
- //创建ListDialog
- publicDialogcreateListDialog(){
- finalCharSequence[]items={"Red","Green","Blue"};
- AlertDialog.Builderbuilder=newAlertDialog.Builder(this);
- builder.setTitle("Pickacolor");
- builder.setItems(items,newDialogInterface.OnClickListener(){
- publicvoidonClick(DialogInterfacedialog,intitem){
- Toast.makeText(getApplicationContext(),items[item],Toast.LENGTH_SHORT).show();
- }
- });
- returnbuilder.create();
- }
- //创建单选Dialog
- publicDialogcreateRadioDialog(){
- finalCharSequence[]items={"Red","Green","Blue"};
- AlertDialog.Builderbuilder=newAlertDialog.Builder(this);
- builder.setTitle("Pickacolor");
- builder.setSingleChoiceItems(items,-1,newDialogInterface.OnClickListener(){
- publicvoidonClick(DialogInterfacedialog,intposition){
- Toast.makeText(getApplicationContext(),position+"->"+items[position],Toast.LENGTH_SHORT).show();
- dialog.dismiss();
- }
- });
- returnbuilder.create();
- }
- //创建多选Dialog
- publicDialogcreateCheckboxDialog(){
- finalCharSequence[]items={"Red","Green","Blue"};
- finalboolean[]checked=newboolean[]{false,false,false};
- AlertDialog.Builderbuilder=newAlertDialog.Builder(this);
- builder.setTitle("Pickacolor");
- builder.setMultiChoiceItems(items,checked,newDialogInterface.OnMultiChoiceClickListener(){
- @Override
- publicvoidonClick(DialogInterfacedialog,intwhich,booleanisChecked){
- //TODOAuto-generatedmethodstub
- }
- });
- builder.setPositiveButton("确定",newDialogInterface.OnClickListener(){
- publicvoidonClick(DialogInterfacedialog,intid){
- ShowDialogActivity.this.finish();
- }
- })
- .setNegativeButton("取消",newDialogInterface.OnClickListener(){
- publicvoidonClick(DialogInterfacedialog,intid){
- dialog.cancel();
- }
- });
- returnbuilder.create();
- }
- }