package com.gh.base.fragment; import android.app.Dialog; import android.os.Bundle; import android.view.KeyEvent; import com.gh.common.util.ClickUtils; import com.gh.gamecenter.R; import com.lightgame.utils.RuntimeUtils; import com.lightgame.utils.Utils; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.annotation.StringRes; import androidx.fragment.app.DialogFragment; import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentManager; import androidx.fragment.app.FragmentTransaction; import androidx.lifecycle.Lifecycle; /** * @author CsHeng * @Date 17/05/2017 * @Time 4:30 PM */ public class BaseDialogFragment extends DialogFragment { @NonNull @Override public Dialog onCreateDialog(Bundle savedInstanceState) { final Dialog dialog = new Dialog(getActivity(), R.style.DialogWindowTransparent); dialog.setCanceledOnTouchOutside(false); dialog.setOnKeyListener((dialog1, keyCode, event) -> { if (keyCode == KeyEvent.KEYCODE_BACK && !ClickUtils.isFastDoubleClick()) { return onBack(); } return false; }); dialog.setCancelable(false); return dialog; } public void toast(@StringRes int res) { if (getLifecycle().getCurrentState().isAtLeast(Lifecycle.State.STARTED)) toast(getString(res)); } public void toast(String msg) { if (getLifecycle().getCurrentState().isAtLeast(Lifecycle.State.STARTED)) Utils.toast(getContext(), msg); } public void toastLong(@StringRes int msg) { toastLong(getString(msg)); } public void toastLong(String msg) { RuntimeUtils.getInstance().toastLong(getContext(), msg); } public boolean onBack() { return false; } @Override public void show(@NonNull FragmentManager manager, @Nullable String tag) { Fragment fragment = manager.findFragmentByTag(tag); if (fragment != null) { FragmentTransaction transaction = manager.beginTransaction(); transaction.show(fragment); transaction.commit(); } else { super.show(manager, tag); } } }