1

I have a problem with my code, it's crashing for me when I have more than 1 textChangeListener. I think that the problem is with using "new TextWatcher" more than once but I don't know what to change it to.

I'm only starting to learn java and app development so the code and variables are a bit messy.

the code:

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

        }
    });
}
maDub
  • 69
  • 10

1 Answers1

1

you have to get the input(CharSequence s) from your EditText's onTextChanged paramenter.so your code will be..

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

        }
    });
}

i hope it will work for you you have to give the correct input for your calculation, if you want to input int, you have to parse string to int, or if you want to input as double, parse string to double and throw for exception

Htoo Aung Hlaing
  • 2,173
  • 15
  • 26