有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Android应用程序addTextChangedListner

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

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

守则:

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

        }
    });
}

共 (1) 个答案

  1. # 1 楼答案

    您必须从EditText的ContextChanged参数中获取输入(字符序列)。因此,您的代码将是

    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并抛出异常