我正在尝试做多个edittext addtextchangedlistener,但应用程序崩溃了



我的应用程序中有两个edittext。当我开始在这两个edittex中的任何一个中写入值时,我希望在另一个中看到结果。但当我开始在任何edittex中键入值时,我会得到一个错误

private fun initListener() {
var money = 0.0
binding.apply {
monayValueEditText1.addTextChangedListener {
val money1position = moneyValueSpinner1.selectedItemPosition
val money2position = moneyValueSpinner2.selectedItemPosition
money = if (it!!.isEmpty()) 0.0 else
it.toString().toDouble()
val result =
((currencyList[money1position].ForexBuying!! / currencyList[money1position].Unit!!.toDouble()) * money) / currencyList[money2position].ForexBuying!! / currencyList[money2position].Unit!!.toDouble()
monayValueEditText2.setText(DecimalFormat("##.####").format(result).toString())
}
monayValueEditText2.addTextChangedListener {
money = if (it!!.isEmpty()) 0.0 else
it.toString().toDouble()
val money1position = moneyValueSpinner1.selectedItemPosition
val money2position = moneyValueSpinner2.selectedItemPosition
val result =
((currencyList[money2position].ForexBuying!! / currencyList[money2position].Unit!!.toDouble()) * money) / currencyList[money1position].ForexBuying!! / currencyList[money1position].Unit!!.toDouble()
monayValueEditText1.setText(DecimalFormat("##.####").format(result).toString())
}
}
}

我收到的错误信息是这样的数百

xt(TextView.java:6147)
at android.widget.EditText.setText(EditText.java:121)
at android.widget.TextView.setText(TextView.java:6099)
at com.metoer.ceptedovizborsa.view.fragment.CallculationCurrencyFragment$initListener$lambda-3$$inlined$addTextChangedListener$default$2.afterTextChanged(TextView.kt:104)
at android.widget.TextView.sendAfterTextChanged(TextView.java:10602)
at android.widget.TextView.setText(TextView.java:6328)
at android.widget.TextView.setText(TextView.java:6147)
at android.widget.EditText.setText(EditText.java:121)
at android.widget.TextView.setText(TextView.java:6099)

如果您只想获得两个协同工作的EditText,我认为您可以在XML中以双向数据绑定的方式进行,并将文本保留在ViewModel中。

<layout ...>
<data>
<variable 
name="viewModel"
type="com.mypackage.MyViewModel"
</data>
...
<EditText
android:id="@+id/monayValueEditText1"
android:text="@={viewModel.text}"
... />
<EditText
android:id="@+id/monayValueEditText2"
android:text="@={viewModel.text}"
... />
</layout>

相关内容

  • 没有找到相关文章

最新更新