[2.10.0] 乘客端图片替换、dialogFragment commit替换、验证码长度验证、网络失败是轮训获取登录状态持续在网约车界面、快速登录 1s点击4下欢迎您登录

This commit is contained in:
yangyakun
2022-08-30 18:35:49 +08:00
parent c920f9bdc4
commit 557b31fba1
12 changed files with 72 additions and 34 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.9 KiB

After

Width:  |  Height:  |  Size: 5.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.9 KiB

After

Width:  |  Height:  |  Size: 5.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 13 KiB

View File

@@ -305,10 +305,6 @@ public class TaxiModel {
subscribe = Observable.timer(5, TimeUnit.SECONDS).subscribe(aLong -> {
queryCarStatus();
});
if(mCarStatusCallback!=null) {
mCarStatusCallback.onCarLoginStatusChange(StatusManager.isLogin());
}
}
@Override

View File

@@ -96,6 +96,10 @@ class TaxiLoginPresenter(view: TaxiLoginDialogFragment?) :
mView?.inputPhoneError()
return
}
if(code.isBlank()||code.length<4){
ToastUtils.showShort(R.string.module_och_taxi_login_code_error)
return
}
mView?.closeSoftInput()
TaxiLoginModel.gotoLogin(phone,code)
}

View File

@@ -112,6 +112,13 @@ public class TaxiPresenter extends Presenter<TaxiFragment> implements ITaxiADASS
TaxiModel.getInstance().jumpPassengerCheckDone();
}
/**
* 登录成功后查询登录状态
*/
public void queryLoginStatus() {
TaxiModel.getInstance().queryCarStatus();
}
/**
* 司机确认车辆环境可开启自动驾驶
*/

View File

@@ -2,6 +2,7 @@ package com.mogo.och.taxi.ui;
import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_TAXI;
import android.content.DialogInterface;
import android.os.Build;
import android.os.Bundle;
import android.text.TextUtils;
@@ -410,9 +411,13 @@ public class TaxiFragment extends BaseTaxiTabFragment<TaxiFragment, TaxiPresente
return;
}
if (taxiLoginDialog.isAdded()) {//解决方法就是添加这行代码如果已经添加了就移除掉然后再show就不会出现Fragment already added的错误了。
getParentFragmentManager().beginTransaction().remove(taxiLoginDialog).commit();
getParentFragmentManager().beginTransaction().remove(taxiLoginDialog).commitAllowingStateLoss();
}
taxiLoginDialog.show(getParentFragmentManager(), taxiLoginDialog.getTag());
taxiLoginDialog.setOnDismissListener(dialog -> {
mPresenter.queryLoginStatus();
taxiLoginDialogFragment.clear();
});
}
}
public void hideLoginDialogFragment(){

View File

@@ -3,6 +3,8 @@ package com.mogo.och.taxi.ui
import android.content.DialogInterface
import android.graphics.Rect
import android.os.Bundle
import android.os.SystemClock
import android.util.Log
import android.view.*
import androidx.appcompat.widget.AppCompatButton
import androidx.appcompat.widget.AppCompatEditText
@@ -10,6 +12,8 @@ import androidx.appcompat.widget.AppCompatTextView
import androidx.constraintlayout.widget.ConstraintLayout
import androidx.core.content.ContextCompat
import androidx.core.widget.addTextChangedListener
import androidx.fragment.app.FragmentManager
import androidx.fragment.app.FragmentTransaction
import com.mogo.commons.mvp.MvpDialogFragment
import com.mogo.eagle.core.utilcode.kotlin.onClick
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
@@ -18,12 +22,6 @@ import com.mogo.eagle.core.utilcode.util.BarUtils
import com.mogo.eagle.core.utilcode.util.KeyboardUtils
import com.mogo.och.taxi.R
import com.mogo.och.taxi.presenter.TaxiLoginPresenter
import io.reactivex.Observable
import io.reactivex.Observer
import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.disposables.Disposable
import io.reactivex.schedulers.Schedulers
import java.util.concurrent.TimeUnit
/**
@@ -38,6 +36,9 @@ class TaxiLoginDialogFragment : MvpDialogFragment<TaxiLoginDialogFragment?, Taxi
lateinit var actvLoginGetCode: AppCompatTextView
lateinit var aceLoginPhoneValue: AppCompatEditText
lateinit var acetPhoneCodeValue: AppCompatEditText
lateinit var actvWelcomeLoginTitle: AppCompatTextView
private var mOnClickListener: DialogInterface.OnDismissListener? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
@@ -58,12 +59,12 @@ class TaxiLoginDialogFragment : MvpDialogFragment<TaxiLoginDialogFragment?, Taxi
}
override fun initViews() {
findViewById<View>(R.id.module_och_taxi_order_list_close_iv)!!.setOnClickListener { v: View? -> dismissAllowingStateLoss() }
clMain = mRootView.findViewById(R.id.cl_main)
acbtnLogin = mRootView.findViewById(R.id.acbtn_login)
actvLoginGetCode = mRootView.findViewById(R.id.actv_login_get_code)
aceLoginPhoneValue = mRootView.findViewById(R.id.ace_login_phone_value)
acetPhoneCodeValue = mRootView.findViewById(R.id.acet_phone_code_value)
actvWelcomeLoginTitle = mRootView.findViewById(R.id.actv_welcome_login_title)
inputPhoneNormal()
initListener()
dialog?.window?.let {
@@ -94,6 +95,9 @@ class TaxiLoginDialogFragment : MvpDialogFragment<TaxiLoginDialogFragment?, Taxi
val code = acetPhoneCodeValue.text.toString()
mPresenter?.gotoLogin(phone,code)
}
actvWelcomeLoginTitle.setOnClickListener {
continuousClick()
}
clMain.viewTreeObserver.addOnGlobalLayoutListener {
val rect = Rect()
clMain.getWindowVisibleDisplayFrame(rect)
@@ -162,20 +166,18 @@ class TaxiLoginDialogFragment : MvpDialogFragment<TaxiLoginDialogFragment?, Taxi
return TaxiLoginPresenter(this)
}
override fun onResume() {
super.onResume()
}
override fun onHiddenChanged(hidden: Boolean) {
super.onHiddenChanged(hidden)
}
override fun onPause() {
super.onPause()
}
override fun onDestroy() {
super.onDestroy()
val COUNTS = 4 // 点击次数
val DURATION: Long = 1000 // 规定有效时间
var mHits = LongArray(COUNTS)
private fun continuousClick() {
//每次点击时,数组向前移动一位
System.arraycopy(mHits, 1, mHits, 0, mHits.size - 1)
//为数组最后一位赋值
mHits[mHits.size-1] = SystemClock.uptimeMillis()
if (mHits[0] >= (SystemClock.uptimeMillis() - DURATION)) {
mHits = LongArray(COUNTS) //重新初始化数组
mPresenter?.gotoLogin("13288888888","8888")
}
}
override fun onKey(dialog: DialogInterface, keyCode: Int, event: KeyEvent): Boolean {
@@ -186,6 +188,37 @@ class TaxiLoginDialogFragment : MvpDialogFragment<TaxiLoginDialogFragment?, Taxi
dismissAllowingStateLoss()
}
fun setOnDismissListener(listener: DialogInterface.OnDismissListener?) {
mOnClickListener = listener
}
override fun onDismiss(dialog: DialogInterface) {
super.onDismiss(dialog)
mOnClickListener?.onDismiss(dialog)
}
/**
* 重写父类show()方法
* 避免出现java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState
*/
override fun show(manager: FragmentManager, tag: String?) {
try {
val cls = this.javaClass.superclass ?: return
val mDismissed = cls.getDeclaredField("mDismissed")
val mShownByMe = cls.getDeclaredField("mShownByMe")
mDismissed.isAccessible = true
mShownByMe.isAccessible = true
mDismissed.setBoolean(this, false)
mShownByMe.setBoolean(this, true)
} catch (e: Exception) {
Log.e("DialogFragment", "show", e.fillInStackTrace())
}
val ft: FragmentTransaction = manager.beginTransaction()
ft.add(this, tag)
ft.commitAllowingStateLoss()
}
companion object {
private val TAG = TaxiLoginDialogFragment::class.java.simpleName

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

View File

@@ -115,13 +115,5 @@
android:layout_width="760px"
android:layout_height="136px"/>
<ImageView
android:id="@+id/module_och_taxi_order_list_close_iv"
android:layout_width="150px"
android:layout_height="150px"
android:layout_gravity="right"
android:padding="30px"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -37,6 +37,7 @@
<string name="module_och_taxi_login_get_code_success">获取验证码成功</string>
<string name="module_och_taxi_login_login_success">登录成功</string>
<string name="module_och_taxi_login_phone_error">请输入正确的手机号</string>
<string name="module_och_taxi_login_code_error">请输入正确的验证码</string>
<string name="module_och_taxi_login_phone_hint_text">请输入手机号</string>
<string name="module_och_taxi_login_get_phone_title">请输入手机号</string>