О настройке текста в текстовом поле «Изменить» относительно изменения в другом тексте «Редактировать» и наоборот в режиме реального времени - PullRequest
0 голосов
/ 25 июня 2019

У меня есть два поля ввода (Редактировать текстовое поле). В макете Android я пытаюсь установить текст одного текстового поля редактирования на другой. Текст текстового поля Редактировать путем вычисления некоторого значения и наоборот (получение текста из второго текстового поля, затем вычисление идобавить его в первое текстовое поле) в режиме реального времени (в текущее время ввода в поле редактирования), я видел некоторые ответы на «On Listeners Change Text Listeners» и пытался, но, возможно, из-за сосредоточенности вопроса о полях редактирования это сбой.

1 Ответ

0 голосов
/ 26 июня 2019

Одновременное добавление средства просмотра текста может вызвать проблемы (эффект повторения).Но вы можете выполнить свое требование, активируя просмотрщик текста по одному.При изменении текста edittext1 мы будем удалять средство просмотра текста для edittext2 , и мы установим edittext2 в onTextChanged средства просмотра текста edittext1 .затем мы снова активируем средство просмотра текста edittext2 в afterTextChanged средство просмотра текста edittext1 .та же логика применима к edittext1 .

 public class MainActivity extends AppCompatActivity {
        EditText editText1,editText2,editText3,editText4;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            editText1=findViewById(R.id.editText1);
            editText2=findViewById(R.id.editText2);
            editText3=findViewById(R.id.editText3);
            editText4=findViewById(R.id.editText4);
            editText1.addTextChangedListener(textWatcher1);
            editText2.addTextChangedListener(textWatcher2);
            editText3.addTextChangedListener(textWatcher3);
            editText4.addTextChangedListener(textWatcher4);
        }

        TextWatcher textWatcher1=new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {
                editText2.removeTextChangedListener(textWatcher2);
            }

            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {
                editText2.setText(editText1.getText());
            }

            @Override
            public void afterTextChanged(Editable s) {
                editText2.addTextChangedListener(textWatcher2);
            }
        };

        TextWatcher textWatcher2=new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {
                editText1.removeTextChangedListener(textWatcher1);
            }

            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {
                editText1.setText(editText2.getText());
            }

            @Override
            public void afterTextChanged(Editable s) {
                editText1.addTextChangedListener(textWatcher1);
                }
            };
          }

TextWatcher textWatcher3=new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {
                editText4.removeTextChangedListener(textWatcher4);
            }

            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {
                editText4.setText(editText3.getText());
            }

            @Override
            public void afterTextChanged(Editable s) {
                editText4.addTextChangedListener(textWatcher4);
            }
        };

        TextWatcher textWatcher4=new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {
                editText3.removeTextChangedListener(textWatcher3);
            }

            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {
                editText3.setText(editText4.getText());
            }

            @Override
            public void afterTextChanged(Editable s) {
                editText3.addTextChangedListener(textWatcher3);
                }
            };
          }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...