package org.cowboycoders.cyclismo.fragments; import android.app.Activity; import android.app.Dialog; import android.content.Context; import android.content.DialogInterface; import android.os.Bundle; import android.os.Parcelable; import android.support.v4.app.DialogFragment; import android.support.v4.app.FragmentActivity; import org.cowboycoders.cyclismo.util.DialogUtils; public class ConfirmationDialogFragment extends DialogFragment { public static final String TAG = ConfirmationDialogFragment.class.getSimpleName(); private static final String CALLBACK_KEY = "callbackKey"; public interface DialogCallback extends Parcelable { void onConfirm(Context context); CharSequence getConfirmationMessage(Context context); void onFinish(Context context); } private FragmentActivity activity; private DialogCallback callback; private CharSequence confirmationMessage; @Override public void onAttach(Activity anActivity) { super.onAttach(anActivity); callback = getArguments().getParcelable(CALLBACK_KEY); confirmationMessage = callback.getConfirmationMessage(anActivity); } @Override public Dialog onCreateDialog(Bundle savedInstanceState) { activity = getActivity(); return DialogUtils.createConfirmationDialog(activity, confirmationMessage, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { callback.onConfirm(activity); // Close the activity since its content can change after delete activity.finish(); callback.onFinish(activity); } }); } public static DialogFragment newInstance(DialogCallback callback) { if (callback == null) { throw new IllegalArgumentException("callback cannot be null"); } Bundle bundle = new Bundle(); bundle.putParcelable(CALLBACK_KEY, callback); ConfirmationDialogFragment confirmationDialogFragment = new ConfirmationDialogFragment(); confirmationDialogFragment.setArguments(bundle); return confirmationDialogFragment; } }