2 OnClickListeners для одной кнопки не может разрешить OnClick Listener - PullRequest
0 голосов
/ 24 января 2020

Я добавил следующие строки кода в мой метод OnCreate. Моя цель - назначить кнопку двум функциям и вызывать их поочередно. При первом нажатии текст кнопки должен быть изменен, а текст редактирования должен быть редактируемым. При втором щелчке поля больше не должны редактироваться, а текст кнопки должен измениться на первый вариант. Я реализовал два OnClickListener, и структура программы кажется мне логичной. Тем не менее, я получаю сообщение об ошибке; Msgstr "Невозможно разрешить символ на ClickListener". Что я могу сделать, чтобы запустить описанную выше настройку? Спасибо за все ответы!

private Button ProfilUpdate;
ProfilUpdate=findViewById(R.id.buttonProfilUpdate);
.
.
.
.

     final ProfilUpdate.OnClickListener listener2 = new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                ProfilUpdate.setText("Profil bearbeiten");
                profilVorname.setFocusable(false);
            }
        };
        ProfilUpdate.OnClickListener listener1 = new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                ProfilUpdate.setText("Änderungen speichern");
                profilVorname.setFocusable(true);
                v.setOnClickListener(listener2);
            }
        };
        ProfilUpdate.setOnClickListener(listener1);

Ответы [ 2 ]

1 голос
/ 24 января 2020

почему бы вам не создать boolean isFirstClick = true, а затем проверить его в том же listener

ProfilUpdate.OnClickListener listener = new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if(isFirstClick){
                //Do the job for the first click process 
                isFirstClick= false;
                }else {
                //Do the job for the second click process
                isFirstClick= true;
                }

            }
        };
        ProfilUpdate.setOnClickListener(listener);
0 голосов
/ 24 января 2020

Может быть только один слушатель щелчка на одном представлении за один раз. Используйте ProfileUpdate.setOnClickListener(listener object). Чтобы получить функциональность alternate, вы можете определить логическое значение для отслеживания состояния, например, определить переменную класса вверху Boolean shouldChangeText = true, а в теле onClick в слушателе сделать что-то вроде:

If (shouldChangeText) { // change the text
 }
else { // clear the text
}
shouldChangeText = !shouldChangeText
...