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

dialog3

How to use selection result from Activity(DialogFragment (Add Listener))