diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/operate/preferences/PreferenceWithSpeedSetting.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/operate/preferences/PreferenceWithSpeedSetting.kt index b1d0353080..c5bd5d3df5 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/operate/preferences/PreferenceWithSpeedSetting.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/operate/preferences/PreferenceWithSpeedSetting.kt @@ -6,6 +6,7 @@ import android.text.Editable import android.util.AttributeSet import android.widget.EditText import android.widget.TextView +import androidx.core.widget.doAfterTextChanged import androidx.core.widget.doBeforeTextChanged import androidx.core.widget.doOnTextChanged import androidx.preference.Preference @@ -13,6 +14,7 @@ import androidx.preference.PreferenceViewHolder import com.mogo.eagle.core.function.hmi.R import com.mogo.eagle.core.utilcode.kotlin.onClick import com.mogo.eagle.core.utilcode.kotlin.onClickWidthDuration +import com.mogo.eagle.core.utilcode.mogo.logger.Logger import com.mogo.eagle.core.utilcode.util.ToastUtils import java.math.BigDecimal import java.util.concurrent.ConcurrentHashMap @@ -70,20 +72,32 @@ class PreferenceWithSpeedSetting : Preference { speedUnit?.text = unit val speedLimit = holder.findViewById(R.id.tv_speed_limit) as? TextView if (cache.containsKey(key)) { - cur = max(cur, cache[key] ?: 0.0) + cur = cache[key] ?: cur } + cur = BigDecimal.valueOf(cur).setScale(1).toDouble() if (speedLimit is EditText) { speedLimit.setText(cur.toString()) - speedLimit.doOnTextChanged { text, _, _, _ -> + speedLimit.doAfterTextChanged { text -> val current = text?.let { runCatching { it.toString().toDouble() }.getOrNull() } if (current == null) { - return@doOnTextChanged + btnOk.isEnabled = false + holder.itemView.isEnabled = false + ll.isSelected = false + return@doAfterTextChanged } if (current > max) { + btnOk.isEnabled = false + holder.itemView.isEnabled = false + ll.isSelected = false ToastUtils.showShort("阈值最大为${BigDecimal.valueOf(max).setScale(1)}$unit") - return@doOnTextChanged + return@doAfterTextChanged } - cur = current + val temp = BigDecimal.valueOf(current).setScale(1).toDouble() + if (cur == temp) { + return@doAfterTextChanged + } + Logger.d("RWJ", "--- cache ---- 2 ---: $cur, $temp") + cur = temp btnOk.isEnabled = true ll.isSelected = true cache[key] = cur @@ -131,7 +145,6 @@ class PreferenceWithSpeedSetting : Preference { btnOk.isEnabled = true enabled[key] = true if (speedLimit is EditText) { - speedLimit.setText("") speedLimit.setText(addAfter.toString()) } else { speedLimit?.text = addAfter.toString() @@ -141,7 +154,6 @@ class PreferenceWithSpeedSetting : Preference { btnOk.onClick { onPreferenceClickListener?.also { enabled[key] = false - cache.remove(key) extras.putDouble(KEY_BUNDLE_CURRENT_VALUE, cur) it.onPreferenceClick(this) }