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))

