package org.droidplanner.android.dialogs; import android.app.Dialog; import android.content.DialogInterface; import android.os.Bundle; import android.support.v4.app.DialogFragment; import android.support.v7.app.AlertDialog; import org.droidplanner.android.R; /** * Created by fhuya on 5/10/2016. */ public class LoadingDialog extends DialogFragment { protected final static String EXTRA_TITLE = "title"; public interface Listener { void onStarted(); void onCancel(); void onDismiss(); } public static LoadingDialog newInstance(String title, Listener listener){ LoadingDialog dialog = new LoadingDialog(); Bundle b = new Bundle(); b.putString(EXTRA_TITLE, title); dialog.setArguments(b); dialog.listener = listener; return dialog; } private Listener listener; @Override public Dialog onCreateDialog(Bundle savedInstanceState){ final Bundle args = getArguments(); final String title = args.getString(EXTRA_TITLE, ""); return new AlertDialog.Builder(getActivity()) .setTitle(title) .setView(R.layout.fragment_loading_dialog) .create(); } @Override public void onStart(){ super.onStart(); Dialog dialog = getDialog(); if(dialog != null){ dialog.setCanceledOnTouchOutside(true); dialog.setOnCancelListener(new DialogInterface.OnCancelListener() { @Override public void onCancel(DialogInterface dialog) { if(listener != null){ listener.onCancel(); } } }); dialog.setOnDismissListener(new DialogInterface.OnDismissListener() { @Override public void onDismiss(DialogInterface dialog) { if(listener != null){ listener.onDismiss(); } } }); } } @Override public void onResume(){ super.onResume(); if(listener != null){ listener.onStarted(); } } @Override public void onStop(){ super.onStop(); Dialog dialog = getDialog(); if(dialog != null){ dialog.setOnDismissListener(null); } dismissAllowingStateLoss(); } }