首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >安卓应用addTextChangedListner

安卓应用addTextChangedListner
EN

Stack Overflow用户
提问于 2015-10-07 18:43:03
回答 1查看 46关注 0票数 1

我的代码有一个问题,当我有超过1个textChangeListener时,它就会崩溃。我认为问题出在多次使用“新TextWatcher”,但我不知道该将其更改为什么。

我刚刚开始学习java和应用程序开发,所以代码和变量都有点乱。

代码:

代码语言:javascript
复制
editMiles.addTextChangedListener(new TextWatcher() {
    @Override

        public void beforeTextChanged(CharSequence s, int start, int count, int after) {

        }

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
            strMiles = 0 + editMiles.getText().toString();
            intMiles = Integer.parseInt(strMiles);
            editKnots.setText("" + intMiles * 1.15078);
            editKilometers.setText("" + intMiles * 1.852);
        }

        @Override
        public void afterTextChanged(Editable s) {

      }
   });

    editBeaufort.addTextChangedListener(new TextWatcher() {
        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {

        }

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
            strBeaufort = 0 + editBeaufort.getText().toString();
            intBeaufort = Integer.parseInt(strBeaufort);
            editKnots.setText("");
            editKilometers.setText("");
            editMiles.setText("");
        }

        @Override
        public void afterTextChanged(Editable s) {

        }
    });
}
EN

回答 1

Stack Overflow用户

发布于 2015-10-07 19:03:04

您必须从您的EditText的onTextChanged paramenter.so中获取输入(CharSequence s)您的代码将是..

代码语言:javascript
复制
editMiles.addTextChangedListener(new TextWatcher() {
    @Override

        public void beforeTextChanged(CharSequence s, int start, int count, int after) {

        }

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
            strMiles = s.toString().trim();
            intMiles = Integer.parseInt(strMiles);
            editKnots.setText("" + intMiles * 1.15078);
            editKilometers.setText("" + intMiles * 1.852);
        }

        @Override
        public void afterTextChanged(Editable s) {

      }
   });

    editBeaufort.addTextChangedListener(new TextWatcher() {
        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {

        }

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
            strBeaufort = s.toString().trim();
            intBeaufort = Integer.parseInt(strBeaufort);
            editKnots.setText("");
            editKilometers.setText("");
            editMiles.setText("");
        }

        @Override
        public void afterTextChanged(Editable s) {

        }
    });
}

我希望它对你有用,你必须为你的计算提供正确的输入,如果你想输入int,你必须将string解析为int,或者如果你想作为double输入,那么将string解析为double,然后抛出异常

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32990136

复制
相关文章

相似问题

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