カスタムDialogFragmentにPositiveButtonクリックを聞き、私はこのような項目のリストを取得するには、カスタムAlertDialogを作成しています...アンドロイド:
ダイアログフラグメント:
public class MultiListDialog extends DialogFragment {
private ArrayList<Integer> selectedItems = new ArrayList<>();
public MultiListDialog newInstance(Bundle args) {
MultiListDialog d = new MultiListDialog();
d.setArguments(args);
return d;
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
selectedItems = new ArrayList();
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setTitle(getArguments().getString("title", ""))
.setMultiChoiceItems(getArguments().getCharSequenceArray("list"), null, new DialogInterface.OnMultiChoiceClickListener() {
@Override
public void onClick(DialogInterface dialog, int which, boolean isChecked) {
if (isChecked) {
selectedItems.add(which);
} else if (selectedItems.contains(which)) {
selectedItems.remove(Integer.valueOf(which));
}
}
})
.setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int i) {
}
})
.setNegativeButton(R.string.cancel_only, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int i) {
dialog.cancel();
}
});
return builder.create();
}
public ArrayList<String> getSelectedItems() {
ArrayList<String> ret = new ArrayList<>();
for (int i=0; i<selectedItems.size(); i++)
ret.add(getArguments().getCharSequenceArray("list")[i].toString());
return ret;
}
}
活動:
Bundle args = new Bundle();
args.putString("title", "My Title");
args.putCharSequenceArray("list", arrayList.toArray(new CharSequence[arrayList.size()]));
DialogFragment fragment = new MultiListDialog().newInstance(args);
fragment.show(getFragmentManager(), "my_frag");
OKクリックで選択したアイテムを取得するにはどうすればよいですか?私はインターフェイスと抽象関数を追加しようとしましたが、正しく動作させることができませんでした。
https://guides.codepath.com/android/Using-DialogFragment – USKMobility