首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我试图做多个编辑文本addtextchangedlistener,但是应用程序崩溃了

我试图做多个编辑文本addtextchangedlistener,但是应用程序崩溃了
EN

Stack Overflow用户
提问于 2022-10-17 20:26:52
回答 1查看 30关注 0票数 0

我的申请中有两篇社论。当我开始在这两个编辑器中的任何一个中写一个值时,我想在另一个编辑器中看到结果。但是,当我开始在任何编辑中键入值时,都会出现一个错误。

代码语言:javascript
复制
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())
            }

        }

    }

我得到的错误信息是

代码语言:javascript
复制
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)
EN

回答 1

Stack Overflow用户

发布于 2022-10-17 21:12:54

如果您只对获得两个协同工作的EditText感兴趣,我想您可以在双向数据库中使用双向数据库方式,而将文本保存在ViewModel中。

代码语言:javascript
复制
<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>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74102877

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档