I am trying to create a simplistic dialog similar to a DatePickerDialog
. The Dialog
that I am creating should provide the user with an array of images from which they can select.
I believe I have managed to create the array and add the correct images to it, the problem I am running into now is how to get the Dialog
to show up? What should I be returning?
I have looked into AlertDialogs
and such, but I am not sure as to what to do to implement them.
UPDATED: FIXED PROBLEM, CODE SHOWN BELOW IS FUNCTIONING
PICTURE PICKER
public class PicturePickerFragment extends DialogFragment {
ArrayList<Integer> imageList = new ArrayList<Integer>();
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
// fill an array with selected images
String title = "Picture";
imageList.add(R.drawable.barbershop);
imageList.add(R.drawable.wedding);
imageList.add(R.drawable.meeting);
imageList.add(R.drawable.barbershop);
// return alertdialog
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
LayoutInflater inflater = getActivity().getLayoutInflater();
// Inflate and set the layout for the dialog
// Pass null as the parent view because its going in the dialog layout
builder.setView(inflater.inflate(R.layout.activity_create, null))
.setTitle(R.string.event_type)
.setPositiveButton(R.string.select_picture,
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog,
int which) {
// call the method on the parent activity when
// user click the positive button
}
});
return builder.create();
}
}
FOR REFERENCE
public class DatePickerFragment extends DialogFragment implements
DatePickerDialog.OnDateSetListener {
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
// Use the current date as the default date in the picker
final Calendar c = Calendar.getInstance();
int year = c.get(Calendar.YEAR);
int month = c.get(Calendar.MONTH);
int day = c.get(Calendar.DAY_OF_MONTH);
// Create a new instance of DatePickerDialog and return it
return new DatePickerDialog(getActivity(), this, year, month, day);
}
public void onDateSet(DatePicker view, int year, int month, int day) {
// Do something with the date chosen by the user
month++;
String dateString = month + "/" + day + "/" + year;
Button b = (Button) getActivity().findViewById(R.id.btn_date);
b.setText(dateString);
}
}
THE FRAGMENT WILL BE USED LIKE THIS
<Button
android:id="@+id/btn_picture"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_marginBottom="15dp"
android:layout_marginTop="15dp"
android:layout_weight="1"
android:background="@null"
android:drawablePadding="15dp"
android:onClick="showPicturePickerDialog"
android:drawableTop="@drawable/ico_picture"
android:text="Picture"
android:textColor="@color/darkbrown"
android:textSize="20sp" />
If the activity in which you want to open the
DialogFragment
extendsFragmentActivity
, you should execute:Also you need to inflate your dialog layout file in the method
onCreateDialog
of your dialog fragment class.Using
AlertDialog.Builder
you can achieve all this easily, e.g.There are many examples on http://developer.android.com/reference/android/app/DialogFragment.html
There are different ways you can create your dialog either using
OnCreateView
method or usingOnCreateDialog
method if you are extending theDialogFragment
class and so the implementation goes in a different way for both.You should return your
Dialog
instance fromOnCreateDialog
method.How to show the dialog in a
Activity
May be you can refer to this link which is a nice example from official AndroidDeveloper's site.