java - Android App addTextChangedListner

标签 java android android-activity

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

我才刚刚开始学习java和app开发,所以代码和变量有点乱。

代码:

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) {

        }
    });
}

最佳答案

您必须从 EditText 的 onTextChanged 参数中获取输入(CharSequence s)。因此您的代码将是..

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,你必须将字符串解析为 int,或者如果你想输入为 double,将字符串解析为 double 并抛出异常

关于java - Android App addTextChangedListner,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32990136/

相关文章:

java - HK2 IterableProvider 命名方法找不到实现

iphone - 文件转换器将动画 3D 角色从 Autodesk Maya 导出为 Quake MD2

android - 媒体 Controller 不起作用

java - 为什么我不能将 View 类型的对象转换为 KeyboardView

java - 一键书写

java - 从 Integer.parseInt() 获取 "NumberFormatException",可能是由于误解

java - 获取 Android 通知以显示为横幅

Android Activity 和 Fragment,最佳实践

android - 从 Activity 中的 fragment 返回到另一个或旧 Activity

java - 在eclipse上导入现有项目后突然报错ObjectSetting.java文件