私は DialogFragments に関するいくつかの Android チュートリアルに従い、カスタマイズしました。これが私がコーディングしたものです。
public class ChooseDialog extends DialogFragment {
ArrayList mSelectedItems;
CharSequence[] items;
boolean[] selected;
public static ChooseDialog newInstance(CharSequence[] options) {
ChooseDialog f = new ChooseDialog();
Bundle args = new Bundle();
args.putCharSequenceArray("items", options);
f.setArguments(args);
return f;
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
mSelectedItems = new ArrayList();
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setTitle("Choose")
.setMultiChoiceItems(savedInstanceState.getCharSequenceArray("items"), null,
new DialogInterface.OnMultiChoiceClickListener() {
public void onClick(DialogInterface dialog, int whichButton, boolean isChecked) {
if (isChecked) {
mSelectedItems.add(whichButton);
} else if (mSelectedItems.contains(whichButton)) {
mSelectedItems.remove(Integer.valueOf(whichButton));
}
}
})
.setPositiveButton("Chosen", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
}
});
return builder.create();
}
}
ダイアログを表示したいアクティビティを呼び出します。
CharSequence items[] = { "foo", "bar" };
DialogFragment newFragment = ChooseDialog.newInstance(items);
newFragment.show(this.getFragmentManager(), "somedialog");
Bundle savedInstanceState が null であるため、setMultiChoiceItems を呼び出すときにクラッシュします。私は何をすべきか?Android開発の学習を始めたばかりなので、もっとエレガントにできるかもしれません.. :)