# Conflicts: # app/src/main/java/com/gh/common/exposure/ExposureManager.kt # app/src/main/java/com/gh/common/loghub/LoghubUtils.kt # app/src/main/java/com/gh/common/videolog/VideoRecordUtils.kt # app/src/main/java/com/gh/download/DownloadManager.java # app/src/main/java/com/gh/gamecenter/SplashScreenActivity.java # app/src/main/java/com/gh/gamecenter/gamedetail/dialog/GameDetailMoreDialog.kt # app/src/main/java/com/halo/assistant/HaloApp.java # dependencies.gradle # libraries/LGLibrary
102 lines
2.9 KiB
Java
102 lines
2.9 KiB
Java
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 java.lang.reflect.Field;
|
|
|
|
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(), getThemeRes());
|
|
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 int getThemeRes() {
|
|
return R.style.DialogWindowTransparent;
|
|
}
|
|
|
|
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 {
|
|
try {
|
|
Class<?> clazz = DialogFragment.class;
|
|
Field dismissed = clazz.getDeclaredField("mDismissed");
|
|
dismissed.setAccessible(true);
|
|
dismissed.set(this, false);
|
|
|
|
Field shownByMe = clazz.getDeclaredField("mShownByMe");
|
|
shownByMe.setAccessible(true);
|
|
shownByMe.set(this, true);
|
|
FragmentTransaction transaction = manager.beginTransaction();
|
|
transaction.add(this, tag);
|
|
transaction.commitAllowingStateLoss();
|
|
} catch (Exception e) {
|
|
super.show(manager, tag);
|
|
e.printStackTrace();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|