@baddev

Почему не срабатывает метод указанный в OnClick когда есть OnClickListener?

Есть простая кнопка с прописанным в xml-ке методом в OnClick, который прекрасно работает.

<Button
        ...
        android:onClick="onAddButtonClick" />


Но стоит добавить нечто такое в java-файле
btnAdd.setOnClickListener(
                new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
                            btnAdd.setBackgroundTintList(ColorStateList.valueOf(Color.BLUE));
                        }
                        else {
                            btnAdd.setBackgroundColor(Color.BLUE);
                        }
                        Toast.makeText(MainActivity.this, "Ok!", Toast.LENGTH_SHORT).show();
                    }
                }
        );


то теперь при нажатии срабатывает только новый метод, а тот что прописан в OnClick не срабатывает.

Только начал изучать разработку под андроид поэтому не понимаю насколько это правильное поведение, буду благодарен если подскажете почему так происходит
  • Вопрос задан
  • 414 просмотров
Решения вопроса 1
zagayevskiy
@zagayevskiy Куратор тега Java
Android developer at Yandex
Это правильное поведение. Насколько ты мог заметить, метод называется setOnClickListener. Это значит, таковой листенер может быть только один. Внутри вьюхи он просто физически один хранится, и когда ты из кода его ставишь, он перетирает проставленный из xml.
Такой вот чудесный API.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы