хотите использовать одну кнопку в качестве backsapce для 2 отдельных редактировать текст? - PullRequest
0 голосов
/ 18 января 2019

Я хочу использовать одну кнопку в качестве возврата на 2 отдельных текста редактирования Я имею в виду, когда фокус на (редактировать текст) я могу использовать кнопку на нем .....

Я не могу использовать оператор if (я новичок в разработке для Android)

Это мой код

        bak.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
             if (et1.hasFocus()) {
              }
            String str = et1.getText().toString();
            if (str.length() > 1) {
                str = str.substring(0, str.length() - 1);
                et1.setText(str);
            } else if (str.length() <= 1) {
                et1.setText("");
            }
        }

    });
    bak.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if (et2.hasFocus()){
             }
            String str2 = et2.getText().toString();
            if (str2.length() > 1) {
                str2 = str2.substring(0, str2.length() - 1);
                et2.setText(str2);
            } else if (str2.length() <= 1) {
                et2.setText("");
            }
        }
    });

но мой другой код для другой кнопки работает нормально (почему?)

   BT9.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if (et2.hasFocus()) {
                et2.append("9");
            }
            if (et1.hasFocus()) {
                et1.append("9");
            }
            if (ans.hasFocus()) {
                ans.append("9");
            }

        }
    });

Ответы [ 2 ]

0 голосов
/ 18 января 2019

Вы должны написать свой код, как показано ниже:

bak.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
           if (et1.hasFocus()) {
           }

            String str = et1.getText().toString();
            if (str.length() > 1) {
                str = str.substring(0, str.length() - 1);
                et1.setText(str);
            } else if (str.length() <= 1) {
                et1.setText("");
            }

            ////////////////////////////////////////////////////////////

            if (et2.hasFocus()){
            }

            String str2 = et2.getText().toString();
            if (str2.length() > 1) {
                str2 = str2.substring(0, str2.length() - 1);
                 et2.setText(str2);
            } else if (str2.length() <= 1) {
                 et2.setText("");
            }    
        }    
    });
0 голосов
/ 18 января 2019

Проблема в вашем коде состоит в том, что вы устанавливаете OnClickListener на одну и ту же кнопку два раза. Второй OnClickListener перезапишет первый. Поэтому нам нужно сделать это в одном OnClickListener. Пожалуйста, попробуйте ниже код

 bak.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            EditText focusEditText=et1;
            if (et1.hasFocus()) {
                focusEditText=et1;
            }
            if (et2.hasFocus()){
                focusEditText=et2;
            }
            String str = focusEditText.getText().toString();
            if (str.length() > 1) {
                str = str.substring(0, str.length() - 1);
                focusEditText.setText(str);
            } else if (str.length() <= 1) {
                focusEditText.setText("");
            }
        }

    });
...