Commit c82bb919 authored by zhang_z's avatar zhang_z

加强Fragment切换的保护;

parent d42d0399
...@@ -30,8 +30,7 @@ import me.yokeyword.fragmentation.SupportActivity; ...@@ -30,8 +30,7 @@ import me.yokeyword.fragmentation.SupportActivity;
* @author Zhangzhen * @author Zhangzhen
*/ */
public abstract class BaseActivity<P extends BasePresenter, B extends ViewDataBinding> extends public abstract class BaseActivity<P extends BasePresenter, B extends ViewDataBinding> extends SupportActivity {
SupportActivity {
public Context mContext; public Context mContext;
public P mPresenter; public P mPresenter;
...@@ -127,7 +126,7 @@ public abstract class BaseActivity<P extends BasePresenter, B extends ViewDataBi ...@@ -127,7 +126,7 @@ public abstract class BaseActivity<P extends BasePresenter, B extends ViewDataBi
@Override @Override
public void start(ISupportFragment toFragment) { public void start(ISupportFragment toFragment) {
if ((System.currentTimeMillis() - mTime) > 500) { if ((System.currentTimeMillis() - mTime) > 1000) {
mTime = System.currentTimeMillis(); mTime = System.currentTimeMillis();
super.start(toFragment); super.start(toFragment);
} }
......
...@@ -24,13 +24,13 @@ import me.yokeyword.fragmentation.SupportFragment; ...@@ -24,13 +24,13 @@ import me.yokeyword.fragmentation.SupportFragment;
* @param <B> Fragment对应的ViewDataBinding * @param <B> Fragment对应的ViewDataBinding
* @author Zhangzhen * @author Zhangzhen
*/ */
public abstract class BaseFragment<P extends BasePresenter, B extends ViewDataBinding> extends public abstract class BaseFragment<P extends BasePresenter, B extends ViewDataBinding> extends SupportFragment {
SupportFragment {
public Context mContext; public Context mContext;
public P mPresenter; public P mPresenter;
public B mViewBinding; public B mViewBinding;
public LoadingDialog mLoadingDialog; public LoadingDialog mLoadingDialog;
static { static {
AppCompatDelegate.setCompatVectorFromResourcesEnabled(true); AppCompatDelegate.setCompatVectorFromResourcesEnabled(true);
} }
...@@ -39,8 +39,7 @@ public abstract class BaseFragment<P extends BasePresenter, B extends ViewDataBi ...@@ -39,8 +39,7 @@ public abstract class BaseFragment<P extends BasePresenter, B extends ViewDataBi
@Nullable @Nullable
@Override @Override
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
savedInstanceState) {
mContext = ActivityUtils.getTopActivity(); mContext = ActivityUtils.getTopActivity();
mPresenter = (P) ((BaseActivity) getActivity()).mPresenter; mPresenter = (P) ((BaseActivity) getActivity()).mPresenter;
mLoadingDialog = ((BaseActivity) getActivity()).mLoadingDialog; mLoadingDialog = ((BaseActivity) getActivity()).mLoadingDialog;
...@@ -66,7 +65,6 @@ public abstract class BaseFragment<P extends BasePresenter, B extends ViewDataBi ...@@ -66,7 +65,6 @@ public abstract class BaseFragment<P extends BasePresenter, B extends ViewDataBi
KeyboardUtils.hideSoftInput(getActivity()); KeyboardUtils.hideSoftInput(getActivity());
} }
public String getTabTitle() { public String getTabTitle() {
return null; return null;
} }
......
package com.xingdata.zzdpos.ui.scan; package com.xingdata.zzdpos.ui.scan;
import android.content.Context; import android.content.Context;
import android.hardware.camera2.CameraAccessException;
import android.hardware.camera2.CameraManager; import android.hardware.camera2.CameraManager;
import android.os.Handler; import android.os.Handler;
import android.view.View; import android.view.View;
...@@ -9,6 +10,7 @@ import android.widget.TextView; ...@@ -9,6 +10,7 @@ import android.widget.TextView;
import com.blankj.utilcode.constant.PermissionConstants; import com.blankj.utilcode.constant.PermissionConstants;
import com.blankj.utilcode.util.PermissionUtils; import com.blankj.utilcode.util.PermissionUtils;
import com.blankj.utilcode.util.TimeUtils;
import com.xingdata.zzdpos.R; import com.xingdata.zzdpos.R;
import com.xingdata.zzdpos.base.BaseFragment; import com.xingdata.zzdpos.base.BaseFragment;
import com.xingdata.zzdpos.base.BasePresenter; import com.xingdata.zzdpos.base.BasePresenter;
...@@ -29,6 +31,9 @@ public class ScanFragment<P extends BasePresenter> extends BaseFragment<P, Fragm ...@@ -29,6 +31,9 @@ public class ScanFragment<P extends BasePresenter> extends BaseFragment<P, Fragm
private ViewStub viewStub; private ViewStub viewStub;
private View inflated; private View inflated;
private Long mTime;
@Override @Override
public int getLayoutId() { public int getLayoutId() {
return R.layout.fragment_store_scan; return R.layout.fragment_store_scan;
...@@ -66,6 +71,7 @@ public class ScanFragment<P extends BasePresenter> extends BaseFragment<P, Fragm ...@@ -66,6 +71,7 @@ public class ScanFragment<P extends BasePresenter> extends BaseFragment<P, Fragm
@Override @Override
public void initView() { public void initView() {
isDenied = false; isDenied = false;
mTime = TimeUtils.getNowMills();
PermissionUtils.permission(PermissionConstants.CAMERA).callback(new PermissionUtils.FullCallback() { PermissionUtils.permission(PermissionConstants.CAMERA).callback(new PermissionUtils.FullCallback() {
@Override @Override
public void onGranted(List<String> permissionsGranted) { public void onGranted(List<String> permissionsGranted) {
...@@ -83,6 +89,17 @@ public class ScanFragment<P extends BasePresenter> extends BaseFragment<P, Fragm ...@@ -83,6 +89,17 @@ public class ScanFragment<P extends BasePresenter> extends BaseFragment<P, Fragm
private void initCamera() { private void initCamera() {
mCameraManager = (CameraManager) mContext.getSystemService(Context.CAMERA_SERVICE); mCameraManager = (CameraManager) mContext.getSystemService(Context.CAMERA_SERVICE);
try {
if ((mCameraManager != null ? mCameraManager.getCameraIdList().length : 0) > 1) {
mViewBinding.ivChange.setVisibility(View.VISIBLE);
} else {
mViewBinding.ivChange.setVisibility(View.GONE);
}
} catch (CameraAccessException e) {
e.printStackTrace();
}
if (!titleStr.equals("")) { if (!titleStr.equals("")) {
viewStub = mViewBinding.vsTitle.getViewStub(); viewStub = mViewBinding.vsTitle.getViewStub();
inflated = viewStub.inflate(); inflated = viewStub.inflate();
...@@ -116,21 +133,17 @@ public class ScanFragment<P extends BasePresenter> extends BaseFragment<P, Fragm ...@@ -116,21 +133,17 @@ public class ScanFragment<P extends BasePresenter> extends BaseFragment<P, Fragm
if (mCurCameraId == getDefaultCameraId()) { if (mCurCameraId == getDefaultCameraId()) {
mCurCameraId = getFrontFacingCameraId(); mCurCameraId = getFrontFacingCameraId();
mScannerView.stopCamera(); mScannerView.stopCamera();
mScannerView.startCamera(getFrontFacingCameraId()); mScannerView.startCamera(getFrontFacingCameraId());
} else { } else {
mCurCameraId = getDefaultCameraId(); mCurCameraId = getDefaultCameraId();
mScannerView.stopCamera(); mScannerView.stopCamera();
mScannerView.startCamera(getDefaultCameraId()); mScannerView.startCamera(getDefaultCameraId());
} }
}); });
} }
private int mCurCameraId; private int mCurCameraId;
@Override @Override
public void onResume() { public void onResume() {
super.onResume(); super.onResume();
...@@ -161,6 +174,7 @@ public class ScanFragment<P extends BasePresenter> extends BaseFragment<P, Fragm ...@@ -161,6 +174,7 @@ public class ScanFragment<P extends BasePresenter> extends BaseFragment<P, Fragm
@Override @Override
public boolean onBackPressedSupport() { public boolean onBackPressedSupport() {
if (TimeUtils.getNowMills() - mTime <= 500) return true;
if (mOnBackPressedListener != null) mOnBackPressedListener.onBackPressed(); if (mOnBackPressedListener != null) mOnBackPressedListener.onBackPressed();
return super.onBackPressedSupport(); return super.onBackPressedSupport();
} }
......
...@@ -4,6 +4,7 @@ import android.view.MotionEvent; ...@@ -4,6 +4,7 @@ import android.view.MotionEvent;
import com.blankj.utilcode.util.ActivityUtils; import com.blankj.utilcode.util.ActivityUtils;
import com.blankj.utilcode.util.LogUtils; import com.blankj.utilcode.util.LogUtils;
import com.blankj.utilcode.util.TimeUtils;
import com.blankj.utilcode.util.ToastUtils; import com.blankj.utilcode.util.ToastUtils;
import com.xingdata.zzdpos.C; import com.xingdata.zzdpos.C;
import com.xingdata.zzdpos.R; import com.xingdata.zzdpos.R;
...@@ -139,6 +140,7 @@ public class SettleActivity extends BaseActivity<SettlePresenter, ActivitySettle ...@@ -139,6 +140,7 @@ public class SettleActivity extends BaseActivity<SettlePresenter, ActivitySettle
// mPresenter.payInBank(); // mPresenter.payInBank();
break; break;
case C.PAY_CHANNEL.ALI: case C.PAY_CHANNEL.ALI:
if (TimeUtils.getNowMills() - mTime < 1000) return;
this.showTitleBarByTitleMode(C.TITLE_MODE.TEXT); this.showTitleBarByTitleMode(C.TITLE_MODE.TEXT);
mViewBinding.tvTitle.setText(R.string.settle_channel_ali); mViewBinding.tvTitle.setText(R.string.settle_channel_ali);
mScanFragment.setOnScanCompletedListener(barcode -> { mScanFragment.setOnScanCompletedListener(barcode -> {
...@@ -149,6 +151,7 @@ public class SettleActivity extends BaseActivity<SettlePresenter, ActivitySettle ...@@ -149,6 +151,7 @@ public class SettleActivity extends BaseActivity<SettlePresenter, ActivitySettle
this.start(mScanFragment); this.start(mScanFragment);
break; break;
case C.PAY_CHANNEL.WECHAT: case C.PAY_CHANNEL.WECHAT:
if (TimeUtils.getNowMills() - mTime < 1000) return;
this.showTitleBarByTitleMode(C.TITLE_MODE.TEXT); this.showTitleBarByTitleMode(C.TITLE_MODE.TEXT);
mViewBinding.tvTitle.setText(R.string.settle_channel_wechat); mViewBinding.tvTitle.setText(R.string.settle_channel_wechat);
mScanFragment.setOnScanCompletedListener(barcode -> { mScanFragment.setOnScanCompletedListener(barcode -> {
...@@ -204,9 +207,11 @@ public class SettleActivity extends BaseActivity<SettlePresenter, ActivitySettle ...@@ -204,9 +207,11 @@ public class SettleActivity extends BaseActivity<SettlePresenter, ActivitySettle
return mSettleFragment.mViewBinding.etMark.getText().toString(); return mSettleFragment.mViewBinding.etMark.getText().toString();
} }
private long mTime;
@Override @Override
public void backToSettleFragment() { public void backToSettleFragment() {
mTime = TimeUtils.getNowMills();
this.showTitleBarByTitleMode(C.TITLE_MODE.TEXT); this.showTitleBarByTitleMode(C.TITLE_MODE.TEXT);
mViewBinding.tvTitle.setText(R.string.settle_title); mViewBinding.tvTitle.setText(R.string.settle_title);
mViewBinding.vSearch.hideSoftInput(); mViewBinding.vSearch.hideSoftInput();
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment