Dialogベース(1つのActivityで複数のDialogを作成)
4814 ワード
Android Dev-GuideはActivityの書き換えを推奨します.onCreateDialog()メソッドはDialogを作成し、DialogはこのActivityに帰属します.使い方はこうです义齿onCreateDialog()はDialogを作成し、複数のDialogの統合管理を容易にするために表示されます.注意、後でActivity.showDialog()が同じDialogを表示する場合、Activityは呼び出されません.onCreateDialog()ではなくActivity.を呼び出します.onPrepareDialog()は、前回Dialogを表示したときの状態を使用します.1回目:showDialog()->onCreatedialog()以降:showDialog()->onPrepareDialog()
サンプルコードでは、それぞれcreateExitDialog()、createListDialog()、createRadioDialog()、createCheckboxDialog()、4種類のDialogを作成し、Activityに表示します.サンプルコードは次のとおりです.
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();
}
}