您的位置:首页 > 其它

Dialog基础(在一个Activity中创建多个Dialog)

2015-09-12 16:46 274 查看
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中显示。示例代码如下:

package com.ipjmc.dialog;

import android.app.Activity;

import android.app.AlertDialog;

import android.app.Dialog;

import android.content.DialogInterface;

import android.os.Bundle;

import android.util.Log;

import android.widget.Toast;

public class ShowDialogActivity extends Activity {

/** Called when the activity is first created. */

public static final String TAG = "ShowDialog";

public static final int ID_EXIT_DIALOG = 1;

public static final int ID_LIST_DIALOG = 2;

public static final int ID_RADIO_DIALOG = 3;

public static final int ID_CHECKBOX_DIALOG = 4;

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);



showDialog(ID_EXIT_DIALOG);

showDialog(ID_LIST_DIALOG);

showDialog(ID_RADIO_DIALOG);

showDialog(ID_CHECKBOX_DIALOG);

}



@Override

protected Dialog onCreateDialog(int id) {

// TODO Auto-generated method stub

Dialog dialog = null;

switch(id) {

case ID_EXIT_DIALOG :

dialog = createExitDialog();

break;

case ID_LIST_DIALOG :

dialog = createListDialog();

break;

case ID_RADIO_DIALOG :

dialog = createRadioDialog();

break;

case ID_CHECKBOX_DIALOG :

dialog = createCheckboxDialog();

break;

default :

break;

}

if (dialog != null) {

Log.i(TAG, dialog.toString());

} else {

Log.i(TAG, "dialog = null");

}

return dialog;

}



@Override

protected void onPrepareDialog(int id, Dialog dialog) {

// TODO Auto-generated method stub

super.onPrepareDialog(id, dialog);

}

//创建简单Dialog

public Dialog createExitDialog() {

AlertDialog.Builder builder = new AlertDialog.Builder(this);

builder.setMessage("Are you sure you want to exit?")

.setCancelable(false)

.setPositiveButton("Yes", new DialogInterface.OnClickListener() {

public void onClick(DialogInterface dialog, int id) {

ShowDialogActivity.this.finish();

}

})

.setNegativeButton("No", new DialogInterface.OnClickListener() {

public void onClick(DialogInterface dialog, int id) {

dialog.cancel();

}

});

return builder.create();

}

//创建ListDialog

public Dialog createListDialog() {

final CharSequence[] items = {"Red", "Green", "Blue"};

AlertDialog.Builder builder = new AlertDialog.Builder(this);

builder.setTitle("Pick a color");

builder.setItems(items, new DialogInterface.OnClickListener() {

public void onClick(DialogInterface dialog, int item) {

Toast.makeText(getApplicationContext(), items[item], Toast.LENGTH_SHORT).show();

}

});

return builder.create();

}

//创建单选Dialog

public Dialog createRadioDialog() {

final CharSequence[] items = {"Red", "Green", "Blue"};

AlertDialog.Builder builder = new AlertDialog.Builder(this);

builder.setTitle("Pick a color");

builder.setSingleChoiceItems(items, -1, new DialogInterface.OnClickListener() {

public void onClick(DialogInterface dialog, int position) {

Toast.makeText(getApplicationContext(), position + " -> " + items[position], Toast.LENGTH_SHORT).show();

dialog.dismiss();

}

});

return builder.create();

}

//创建多选Dialog

public Dialog createCheckboxDialog() {

final CharSequence[] items = {"Red", "Green", "Blue"};

final boolean [] checked = new boolean [] {false, false, false};



AlertDialog.Builder builder = new AlertDialog.Builder(this);

builder.setTitle("Pick a color");

builder.setMultiChoiceItems(items, checked, new DialogInterface.OnMultiChoiceClickListener() {

@Override

public void onClick(DialogInterface dialog, int which, boolean isChecked) {

// TODO Auto-generated method stub

}

});



builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {

public void onClick(DialogInterface dialog, int id) {

ShowDialogActivity.this.finish();

}

})

.setNegativeButton("取消", new DialogInterface.OnClickListener() {

public void onClick(DialogInterface dialog, int id) {

dialog.cancel();

}

});



return builder.create();



}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: