Androidダイアログ(Dialog)大全の詳細とコード例
Activitiesは、onCreateDialog(int)、onPrepareDialog(int、Dialog)、showDialog(int)、disDialog(int)などの管理を容易にするためのダイアログ機構を提供しています。これらの方法を使用すると、ActivityはgetOwner Activyによって管理されます。
onCreateDialog(int):このコールバック関数を使うと、Androidシステムは、このActivityを各ダイアログの所有者として有効に設定し、各ダイアログの状態を自動的に管理し、Activityに接続します。このように、各ダイアログはこのActivityの特定の属性を継承します。例えば、一つのダイアログが開くと、メニューキーはこのActivityで定義されているオプションメニューとして表示され、音量キーはActivityで使用されているオーディオストリームを変更します。
showDialog(int):ダイアログを表示したい場合は、showDialog(int id id)メソッドを呼び出し、このダイアログを一意に識別する整数を伝えます。ダイアログが最初に要求されたとき、AndroidはあなたのActivityからオンクリティングディレクトを呼び出します。ここでこのダイアログDialogを初期化します。このフィードバック方法は、show Dialogと同じIDで伝えられている。このダイアログを作成すると、Activityの最後にこのオブジェクトを返します。
OPropareDialog:ダイアログが表示される前に、Androidはオプションのコールバック関数onPropareDialogを呼び出しました。この方法を定義することができます。この方法は、ダイアログを開くたびに呼び出しられますが、OneCreateDialog(int)は、ダイアログが初めて開いたときにのみ呼び出しられます。もしあなたがonPrepareDialogを定義しないなら、このダイアログは前回開いた時と同じです。この方法は、ダイアログのIDと、オンクリアーDialog()で作成されたダイアログオブジェクトにも渡される。
dismisDialog(int):ダイアログを閉じる準備ができたら、このダイアログにdismis()を呼び出して消すことができます。必要であれば、このActivityからdismisDialog(int id)メソッドを呼び出すこともできます。これは実際にこのダイアログに対してdismis()メソッドを呼び出します。あなたがonCreateDialog(int id)を使用してダイアログの状態を管理したいなら(前のチャプターで議論したように)そしてダイアログが消えるたびに、このダイアログオブジェクトの状態はActivityによって保存されます。このオブジェクトを必要としないことを決定するか、またはこの状態をクリアすることが重要であれば、removeDialog(int id id)を呼び出すべきです。これは、内部オブジェクト参照を削除します。このダイアログが表示されている場合は、削除されます。
以下はいくつかのダイアログの効果です。
図1
図2
図3
図4
図5
図6
図7
図1の効果:戻りボタンを押すと、エラーなく操作できるようにするためのヒントが表示され、よくあるダイアログスタイルが採用されます。
コード:
ダイアログの作成方法dialog()
1.レイアウトファイル
onCreateDialog(int):このコールバック関数を使うと、Androidシステムは、このActivityを各ダイアログの所有者として有効に設定し、各ダイアログの状態を自動的に管理し、Activityに接続します。このように、各ダイアログはこのActivityの特定の属性を継承します。例えば、一つのダイアログが開くと、メニューキーはこのActivityで定義されているオプションメニューとして表示され、音量キーはActivityで使用されているオーディオストリームを変更します。
showDialog(int):ダイアログを表示したい場合は、showDialog(int id id)メソッドを呼び出し、このダイアログを一意に識別する整数を伝えます。ダイアログが最初に要求されたとき、AndroidはあなたのActivityからオンクリティングディレクトを呼び出します。ここでこのダイアログDialogを初期化します。このフィードバック方法は、show Dialogと同じIDで伝えられている。このダイアログを作成すると、Activityの最後にこのオブジェクトを返します。
OPropareDialog:ダイアログが表示される前に、Androidはオプションのコールバック関数onPropareDialogを呼び出しました。この方法を定義することができます。この方法は、ダイアログを開くたびに呼び出しられますが、OneCreateDialog(int)は、ダイアログが初めて開いたときにのみ呼び出しられます。もしあなたがonPrepareDialogを定義しないなら、このダイアログは前回開いた時と同じです。この方法は、ダイアログのIDと、オンクリアーDialog()で作成されたダイアログオブジェクトにも渡される。
dismisDialog(int):ダイアログを閉じる準備ができたら、このダイアログにdismis()を呼び出して消すことができます。必要であれば、このActivityからdismisDialog(int id)メソッドを呼び出すこともできます。これは実際にこのダイアログに対してdismis()メソッドを呼び出します。あなたがonCreateDialog(int id)を使用してダイアログの状態を管理したいなら(前のチャプターで議論したように)そしてダイアログが消えるたびに、このダイアログオブジェクトの状態はActivityによって保存されます。このオブジェクトを必要としないことを決定するか、またはこの状態をクリアすることが重要であれば、removeDialog(int id id)を呼び出すべきです。これは、内部オブジェクト参照を削除します。このダイアログが表示されている場合は、削除されます。
以下はいくつかのダイアログの効果です。
図1
図2
図3
図4
図5
図6
図7
図1の効果:戻りボタンを押すと、エラーなく操作できるようにするためのヒントが表示され、よくあるダイアログスタイルが採用されます。
コード:
ダイアログの作成方法dialog()
protected void dialog() {
AlertDialog.Builder builder = new Builder(Main.this);
builder.setMessage(" ?");
builder.setTitle(" ");
builder.setPositiveButton(" ", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
Main.this.finish();
}
});
builder.setNegativeButton(" ", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
builder.create().show();
}
onKeyDown(int keyCode, KeyEvent event)
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
dialog();
}
return false;
}
図2の効果:ダイアログのグラフを変えて、3つのボタンを追加しました。
Dialog dialog = new AlertDialog.Builder(this).setIcon(
android.R.drawable.btn_star).setTitle(" ").setMessage(
" ?").setPositiveButton(" ",
new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
Toast.makeText(Main.this, " 。",
Toast.LENGTH_LONG).show();
}
}).setNegativeButton(" ", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
Toast.makeText(Main.this, " 。", Toast.LENGTH_LONG)
.show();
}
}).setNeutralButton(" ", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
Toast.makeText(Main.this, " 。", Toast.LENGTH_LONG)
.show();
}
}).create();
dialog.show();
図3の効果:情報の内容は簡単なViewタイプです。
new AlertDialog.Builder(this).setTitle(" ").setIcon(
android.R.drawable.ic_dialog_info).setView(
new EditText(this)).setPositiveButton(" ", null)
.setNegativeButton(" ", null).show();
図4の効果:情報の内容は単一選択ボックスのセットです。
new AlertDialog.Builder(this).setTitle(" ").setMultiChoiceItems(
new String[] { "Item1", "Item2" }, null, null)
.setPositiveButton(" ", null)
.setNegativeButton(" ", null).show();
図5の効果:情報の内容は多選択枠のセットです。
new AlertDialog.Builder(this).setTitle(" ").setIcon(
android.R.drawable.ic_dialog_info).setSingleChoiceItems(
new String[] { "Item1", "Item2" }, 0,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
}).setNegativeButton(" ", null).show();
図6の効果:情報の内容は簡単なリスト項目のセットです。
new AlertDialog.Builder(this).setTitle(" ").setItems(
new String[] { "Item1", "Item2" }, null).setNegativeButton(
" ", null).show();
図7の効果:情報の内容はカスタムレイアウトです。1.レイアウトファイル
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="wrap_content" android:layout_width="wrap_content"
android:background="#ffffffff" android:orientation="horizontal"
android:id="@+id/dialog">
<TextView android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:id="@+id/tvname" android:text=" :" />
<EditText android:layout_height="wrap_content"
android:layout_width="wrap_content" android:id="@+id/etname" android:minWidth="100dip"/>
</LinearLayout>
2.コールコード
LayoutInflater inflater = getLayoutInflater();
View layout = inflater.inflate(R.layout.dialog,
(ViewGroup) findViewById(R.id.dialog));
new AlertDialog.Builder(this).setTitle(" ").setView(layout)
.setPositiveButton(" ", null)
.setNegativeButton(" ", null).show();
以上はAndroidダイアログのいくつかの実現方法を整理しました。引き続き関連資料を補充します。ありがとうございます。