From 57466ea21426a7d92a32043c79ffec999d0d7af7 Mon Sep 17 00:00:00 2001 From: Vladimir Date: Sat, 22 Aug 2020 22:04:19 +0500 Subject: [PATCH] added error catcher --- .../widget/AmountWithDecimalEditText.kt | 27 ++++++++++++------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/views/src/main/java/ru/touchin/widget/AmountWithDecimalEditText.kt b/views/src/main/java/ru/touchin/widget/AmountWithDecimalEditText.kt index 54899b1..0b94d90 100644 --- a/views/src/main/java/ru/touchin/widget/AmountWithDecimalEditText.kt +++ b/views/src/main/java/ru/touchin/widget/AmountWithDecimalEditText.kt @@ -97,6 +97,11 @@ class AmountWithDecimalEditText @JvmOverloads constructor( text.withoutFormatting().formatMoney(decimalPartLength_) } else "" + if (textAfter.isEmpty()) { + setText("") + return@doOnTextChanged + } + if (!isTextErased(textBefore, textAfter)) { val diff = textAfter.length - textBefore.length - 1 setText(textAfter) @@ -169,17 +174,21 @@ class AmountWithDecimalEditText @JvmOverloads constructor( textAfter.length <= textBefore.length private fun String.formatMoney(decimalPartLength_: Int?): String { - var mask = COMMON_MONEY_MASK - if (decimalPartLength_ != null && decimalPartLength != 0) { - mask += "." + "0".repeat(min(decimalPartLength_, decimalPartLength)) - } + try { + var mask = COMMON_MONEY_MASK + if (decimalPartLength_ != null && decimalPartLength != 0) { + mask += "." + "0".repeat(min(decimalPartLength_, decimalPartLength)) + } - val formatter = DecimalFormat(mask) - formatter.decimalFormatSymbols = DecimalFormatSymbols().also { - it.decimalSeparator = decimalSeparator[0] - it.groupingSeparator = GROUPING_SEPARATOR + val formatter = DecimalFormat(mask) + formatter.decimalFormatSymbols = DecimalFormatSymbols().also { + it.decimalSeparator = decimalSeparator[0] + it.groupingSeparator = GROUPING_SEPARATOR + } + return formatter.format(this.prepareForDoubleCast().toDouble().floor()) + } catch (e: Throwable) { + return "" } - return formatter.format(this.prepareForDoubleCast().toDouble().floor()) } private fun Double.floor() =