【Android】AlertDialogの表示(チェックボックスダイアログ)

2019年7月29日

チェックボックスダイアログの表示方法です。
ボタンを押すと、下記のようなダイアログを表示します。
チェックボックスダイアログ

●ソースコード
「R.layout.main」にボタンを配置し、
「android:onClick="BtnClick"」を設定し使用するソースです。

//チェックボックスのチェックされている項目を格納するための配列
public boolean[] flags = {true,false,true,false,false};
public boolean[] flags2;
public class TestDialog extends Activity {
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
	}
	//ボタンクリックイベント(XMLにandroid:onClickを記述)
	public void BtnClick(View v) {
		if(v.getId() == R.id.button0)
		{
			showDialog(0);
		}
	}
	@Override
	protected Dialog onCreateDialog(int id) {
		// ダイアログが複数ある場合にidを使用する
		if (id == 0) {
			flags2=flags;
			builder.setIcon(R.drawable.icon);
			builder.setTitle("チェックボックスダイアログ");
			builder.setMultiChoiceItems(R.array.test, flags,
				new DialogInterface.OnMultiChoiceClickListener() {
					public void onClick(DialogInterface dialog, 
								int which, boolean isChecked) {
						//チェックしたものを配列へ
						flags[which] = isChecked;
					}
				});
			builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
				public void onClick(DialogInterface dialog, int whichButton) {
				}
			});
			builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
				public void onClick(DialogInterface dialog, int whichButton) {
					flags=flags2;
				}
			});
			dialog = builder.create();
		}
	}
	@Override
	protected void onPrepareDialog(int id, Dialog dialog) {
		super.onPrepareDialog(id, dialog);
		if (id == 0) {
			//ダイアログの内容に変更がある場合に記述
		}
	}
}

スポンサーリンク