DialogFragment(Single Choice)
DialogFragment prepares Single Choice Type Dialog which has Radio button.
(Basic dialog is here)
Sample
Dialog
public class SingleChoiceDialogFragment extends DialogFragment { public static final String DATA = "items"; public static final String SELECTED = "selected"; @Override public Dialog onCreateDialog(Bundle savedInstanceState) { Resources res = getActivity().getResources(); Bundle bundle = getArguments(); AlertDialog.Builder dialog = new AlertDialog.Builder(getActivity()); dialog.setTitle("Please Select"); dialog.setPositiveButton("Cancel", new PositiveButtonClickListener()); List<String> list = (List<String>)bundle.get(DATA); int position = bundle.getInt(SELECTED); CharSequence[] cs = list.toArray(new CharSequence[list.size()]); dialog.setSingleChoiceItems(cs, position, selectItemListener); return dialog.create(); } class PositiveButtonClickListener implements DialogInterface.OnClickListener { @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); } } OnClickListener selectItemListener = new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // process //which means position dialog.dismiss(); } }; }
Key point is
CharSequence[] cs = list.toArray(new CharSequence[list.size()]); dialog.setSingleChoiceItems(cs, position, selectItemListener);
To give data from outside, we get data from Bundle.(Also need, default choice number)
Set data from Activity and get via Bundle.
Activity
public class DialogTestActivity extends Activity { Button openButton; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.dialog_main); openButton = (Button)findViewById(R.id.button1); openButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { FragmentManager manager = getFragmentManager(); SingleChoiceDialogFragment dialog = new SingleChoiceDialogFragment(); Bundle bundle = new Bundle(); bundle.putStringArrayList(SingleChoiceDialogFragment.DATA, getItems()); // Require ArrayList bundle.putInt(SingleChoiceDialogFragment.SELECTED, 0); dialog.setArguments(bundle); dialog.show(manager, "Dialog"); } }); } private ArrayList<String> getItems() { ArrayList<String> ret_val = new ArrayList<String>(); ret_val.add("Mikasa"); ret_val.add("Crysta"); ret_val.add("Ani"); ret_val.add("Sasha"); ret_val.add("Yumiru"); return ret_val; } }
Result
How to use selection result from Activity(DialogFragment (Add Listener))