Jestem zszokowany, że nikt o tym nie mówił, ale bądź ostrożny, chociaż android:onClickXML wydaje się być wygodnym sposobem obsługi kliknięć, setOnClickListenerimplementacja robi coś więcej niż dodanie onClickListener. Rzeczywiście, ustawia właściwość view clickablena true.
Chociaż może to nie stanowić problemu w większości implementacji Androida, według konstruktora telefonu, domyślnie przycisk button ma zawsze wartość clickable = true, ale inne konstruktory w niektórych modelach telefonu mogą mieć domyślną wartość clickable = false w widokach innych niż Button.
Więc ustawienie XML nie wystarczy, musisz cały czas myśleć, aby dodać android:clickable="true"brak przycisku, a jeśli masz urządzenie, w którym wartość domyślna jest klikalna = prawda i zapomnisz choć raz umieścić ten atrybut XML, nie zauważysz problem w czasie wykonywania, ale dostaniesz informację zwrotną na rynku, kiedy trafi on w ręce Twoich klientów!
Ponadto nigdy nie możemy być pewni, w jaki sposób program Proguard zaciemni i zmieni nazwy atrybutów XML i metody klas, więc nie jest w 100% bezpieczny, że pewnego dnia nigdy nie będzie miał błędu.
Jeśli więc nigdy nie chcesz mieć kłopotów i nigdy o tym nie myśl, lepiej skorzystać z setOnClickListenerbibliotek lub takich jak ButterKnife z adnotacją@OnClick(R.id.button)
onclickponieważ należy upewnić się, że każda klasa implementuje tę metodę. Zakłada się, że używasz układu więcej niż raz. Jeśli jednak miałbyś mieć interfejs Java, aby upewnić się, że metoda jest we wszystkich klasach, które ją zaimplementowały, nie musiałbyś się martwić.