package cl.monsoon.s1next.view.dialog; import android.app.AlertDialog; import android.app.Dialog; import android.content.Context; import android.content.DialogInterface; import android.os.Bundle; import android.support.annotation.NonNull; import android.support.annotation.StringRes; import android.support.v4.app.DialogFragment; import cl.monsoon.s1next.R; import cl.monsoon.s1next.util.IntentUtil; /** * A dialog shows error prompt if the thread link is invalid. * Clicks the negative button can let user open this thread link in browser. */ public final class ThreadLinkInvalidPromptDialogFragment extends DialogFragment { public static final String TAG = ThreadLinkInvalidPromptDialogFragment.class.getName(); private static final String ARG_MESSAGE = "message"; public static ThreadLinkInvalidPromptDialogFragment newInstance(Context context, @StringRes int textResId) { ThreadLinkInvalidPromptDialogFragment fragment = new ThreadLinkInvalidPromptDialogFragment(); Bundle bundle = new Bundle(); bundle.putCharSequence(ARG_MESSAGE, context.getText(textResId)); fragment.setArguments(bundle); return fragment; } @NonNull @Override public Dialog onCreateDialog(Bundle savedInstanceState) { return new AlertDialog.Builder(getContext()) .setMessage(getArguments().getCharSequence(ARG_MESSAGE)) .setPositiveButton(R.string.dialog_button_text_done, (dialog, which) -> dismiss()) .setNegativeButton(R.string.dialog_button_text_use_a_different_app, (dialog, which) -> IntentUtil.startViewIntentExcludeOurApp(getContext(), getActivity().getIntent().getData())) .create(); } @Override public void onDismiss(DialogInterface dialog) { super.onDismiss(dialog); // getActivity() = null when configuration changes (like orientation changes) if (getActivity() != null) { getActivity().finish(); } } }