package com.goka.rssts.view; import android.app.Dialog; import android.app.ProgressDialog; import android.content.DialogInterface; import android.os.Bundle; import android.support.v4.app.DialogFragment; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentActivity; import android.support.v4.app.FragmentManager; import android.view.KeyEvent; /** * Created by katsuyagoto on 2015/04/26. */ public class ProgressDialogFragment extends DialogFragment { public static final String EXTRA_MESSAGE = "message"; public static ProgressDialogFragment newInstance(int message) { Bundle args = new Bundle(); args.putInt(EXTRA_MESSAGE, message); ProgressDialogFragment fragment = new ProgressDialogFragment(); fragment.setArguments(args); return fragment; } public static void show(FragmentActivity activity, int message) { FragmentManager fragmentManager = activity.getSupportFragmentManager(); ProgressDialogFragment dialogFragment = ProgressDialogFragment.newInstance(message); dialogFragment.show(fragmentManager, ProgressDialogFragment.class.getName()); } public static void dismiss(FragmentActivity activity) { FragmentManager fragmentManager = activity.getSupportFragmentManager(); Fragment fragment = fragmentManager .findFragmentByTag(ProgressDialogFragment.class.getName()); if (!(fragment instanceof ProgressDialogFragment)) { String message = "A fragment in the FragmentManager with tag name " + ProgressDialogFragment.class.getName() + " is not in " + ProgressDialogFragment.class.getName(); throw new IllegalStateException(message); } ProgressDialogFragment dialogFragment = (ProgressDialogFragment) fragment; dialogFragment.dismiss(); } public static boolean isShowing(FragmentActivity activity) { FragmentManager fragmentManager = activity.getSupportFragmentManager(); Fragment fragment = fragmentManager.findFragmentByTag(ProgressDialogFragment.class.getName()); return fragment != null; } @Override public Dialog onCreateDialog(Bundle savedInstanceState) { Bundle args = getArguments(); int messageId = args.getInt(EXTRA_MESSAGE); String message = getString(messageId); ProgressDialog progressDialog = new ProgressDialog(getActivity()); progressDialog.setMessage(message); progressDialog.setCancelable(false); progressDialog.setCanceledOnTouchOutside(false); progressDialog.setOnKeyListener(new DialogInterface.OnKeyListener() { @Override public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) { return keyCode == KeyEvent.KEYCODE_BACK; } }); return progressDialog; } }