несколько edittext только с одним текстовым наблюдателем для расчета в android

Я получу значение из первого EditText и еще одно значение из второго EditText, оба значения вычисляются и показывают результат в третьем EditText, который использует только один TextWatcher в android. Пожалуйста, помогите мне, спасибо.

img

public class TextWatcher_Activity extends Activity {
    private EditText passwordEditText, passwordEditText1, passwordEditText2;
    private TextView textView;
    private View view;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_textwatcher);

        /* Initializing views */
        passwordEditText = (EditText) findViewById(R.id.password);
        textView = (TextView) findViewById(R.id.passwordHint);
        textView.setVisibility(View.GONE);

        passwordEditText1 = (EditText) findViewById(R.id.password1);
        passwordEditText2 = (EditText) findViewById(R.id.password2);

 passwordEditText.addTextChangedListener(passwordWatcher);
        passwordEditText1.addTextChangedListener(passwordWatcher);
        passwordEditText2.addTextChangedListener(passwordWatcher);  
}
     private final TextWatcher passwordWatcher = new TextWatcher() {
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {

            }

            public void onTextChanged(CharSequence s, int start, int before, int count) {
                textView.setVisibility(View.VISIBLE);
            }

            public void afterTextChanged(Editable s) {


               *//* if (s.hashCode() == passwordEditText.getText().hashCode()) {
                    //Do else something with input.
                } else if (s.hashCode() == passwordEditText1.getText().hashCode()) {
                    //Do something else useful with input.
                }*//*

                switch (view.getId()) {
                    case R.id.password:
                        //doStuff(1);
                        if (s.length() == 0) {
                            textView.setVisibility(View.GONE);
                        } else {
                            textView.setText("You have entered : " + passwordEditText.getText());
                        }
                        break;
                    case R.id.password1:
                        //doStuff(2);
                        if (s.length() == 0) {
                            textView.setVisibility(View.GONE);
                        } else {
                            textView.setText("You have entered : " + passwordEditText1.getText());
                        }
                        break;
                    case R.id.password2:
                        if (s.length() == 0) {
                            textView.setVisibility(View.GONE);
                        } else {
                            textView.setText("You have entered : " + passwordEditText2.getText());
                        }
                        break;
                }
            }
        };

person Velpukonda Ramesh    schedule 06.03.2017    source источник
comment
А что вы пробовали?   -  person Paresh P.    schedule 06.03.2017


Ответы (1)


Вы можете использовать этот метод и настроить свой код

private void calculate(EditText editText1, EditText editText2, final EditText editText3) {
        final int[] value1 = {0};
        final int[] value2 = {0};
        final int[] total = {0};
        editText1.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) {
                value1[0] = Integer.parseInt(s.toString());
                total[0] = value1[0] + value2[0];
                editText3.setText(total[0]);
            }

            @Override
            public void afterTextChanged(Editable s) {}
        });
        editText2.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) {
                value2[0] = Integer.parseInt(s.toString());
                total[0] = value1[0] + value2[0];
                editText3.setText(total[0]);
            }

            @Override
            public void afterTextChanged(Editable s) {}
        });
    }

editText3 имеет всего editText1 + editText2

person Richard K Maleho    schedule 06.03.2017
comment
я получил ошибку, используя эту функцию, пожалуйста, скажите мне, как я могу вызвать активность - person Velpukonda Ramesh; 06.03.2017
comment
назовите его так, как вы бы назвали любой другой метод, просто передайте свои editTexts, например, calculate(editText1, editText2, editText3); из своей деятельности после инициализации своих editTexts - person Richard K Maleho; 06.03.2017