Zawsze używam zdarzenia onclick()
w większości moich projektów. Ale przeczytałem o OnClickListener()
. Czy ktoś może powiedzieć, jaka jest różnica między tymi dwoma? A który z nich najlepiej jest użyć w aplikacji na Androida ?.Różnica między zdarzeniem OnClick() a OnClickListener?
Odpowiedz
Nie jestem pewien, czy pytanie jest jasne. View.OnClickListener
to interfejs, który definiuje metodę onClick(View)
. Jeśli masz klasę, która zamierza nasłuchiwać kliknięć, powinieneś zaimplementować interfejs (jeśli nie rozszerzasz już klasy) i zaimplementować tę metodę. Musisz użyć obu; nie są one w jakiś sposób alternatywą.
Tak smutne, że istnieje głosowanie w Androidzie, które w dół głosuje na właściwe odpowiedzi :( – Reno
OnClickListener
to interfejs, który należy zaimplementować i który można ustawić na widok w kodzie java.
Ostatnio Android dodał atrybut xml do widoków o nazwie android:onclick
, który może być używany do obsługi kliknięć bezpośrednio w aktywności widoku bez potrzeby implementowania jakiegokolwiek interfejsu.
Obie działają w ten sam sposób, po prostu przechodzą przez kod Java, a drugi za pomocą kodu XML.
OnClickListener jest to, co czeka na kogoś, kto rzeczywiście kliknij, onclick określa, co się dzieje, gdy ktoś kliknie
słuchacz jest klasa, onclick to metoda, to rozróżnienie nie jest bardzo przydatny w prostych przypadkach, ale jeśli chcą być bardziej skomplikowane staje się bardziej konieczne
+1 dla krótkiego n do opisu punktu .. –
używamy
public void button_onClick_name(View v)
{
-------
}
zdefiniować metodę z klasy. Ale aby zdefiniować zdarzenie click komponentu komponentu w klasie, używamy detektora onclick.
Przyjmuję, że przez onClick
używany jest ten, który definiuje się w układzie XML. Te dwa są alternatywne, które służą tej samej funkcji, ale realizowane inaczej.
onClick
z wiążącym w XML szablonu funkcji jest wiązanie pomiędzy onClick i funkcji, że będzie to nazwać. Aby funkcja onClick działała, funkcja musi mieć jeden argument (View
).An
OnClickListener
to interfejs, który każda klasa może zaimplementować. Ponieważ jest to interfejs, który każda klasa może implementować, ma to większą elastyczność i jest bardziej złożona w swojej formie. Niewielka elastyczność, jaką można uzyskać dziękiOnClickListener
- Możesz łatwo zamienić jedną implementację detektora na drugą, jeśli zajdzie taka potrzeba.
- Dzięki
OnClickListener
można oddzielić działanie/zachowanie zdarzenia kliknięcia odView
, które wyzwala wydarzenie. W prostych przypadkach nie jest to tak wielka sprawa, ponieważ w przypadku złożonej obsługi zdarzeń może to oznaczać lepszą czytelność i łatwość konserwacji kodu - Ponieważ interfejs
OnClickListener
jest interfejsem, klasa, która go implementuje, ma elastyczność w określaniu zmiennych i metod instancji że potrzebuje, aby obsłużyć to wydarzenie. Ponownie, nie jest to wielka sprawa w prostych przypadkach, ale w przypadku złożonych przypadków nie chcemy koniecznie mieszać zmiennych/metod związanych z obsługą zdarzeń za pomocą kodu widoku, który wyzwala zdarzenie.
Rozważmy „OnClickListener” jako faceta, który czeka użytkownika do kliknij przycisk aplikacji. Wtedy twój facet wykona twoją metodę OnClick().
Musisz umieścić identyfikator na swoim przycisku w pliku xml, a następnie nadać mu nazwę w pliku MainActivity.java. Następnie ustaw odbiorcę kliknięcia na swojego faceta. I dodaj swoją metodę onClick. Dlatego onClick jest związany z View.OnClickListener interfejsu: https://developer.android.com/reference/android/view/View.OnClickListener.html
Przykład:
Button myButton = (Button)findViewById(R.id.myButton);
myButton.setOnClickListener(new View.OnClickListener(){
@override
public void onClick(View v) {
// your method...
}
}
Istnieje kilka powodów, dla których warto programowo ustawić OnClickListener
. Po pierwsze, jeśli chcesz zmienić zachowanie przycisku podczas działania aplikacji. Możesz wskazać przycisk zupełnie inną metodą lub po prostu wyłączyć przycisk, ustawiając wartość OnClickListener
, która nic nie robi.
Po zdefiniowaniu detektora przy użyciu atrybutu onClick
, widok szuka metody o tej nazwie tylko w działaniu hosta. Programowe ustawienie OnClickListener
pozwala kontrolować zachowanie przycisku z innego miejsca niż aktywność hosta. Będzie to bardzo istotne dla Fragments
, Fragments
zawsze trzeba użyć OnClickListeners
, aby kontrolować swoje przyciski, ponieważ nie są one działaniami i nie będą wyszukiwane dla słuchaczy zdefiniowanych w onClick
.
Button button = (Button)findViewById(R.id.buttonId);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// Do stuff
}
});
OnClickListener jest interfejs i onClick jest sposób OnClickListener.
Możesz dodać atrybut android:onClick="your_method"
do swojego XML.
przykład:
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Click"
android:onClick="your_method"/>
wykorzystujemy OnClick
XML i OnClickListner
kodem java
. Oba są używane do wykonywania funkcji.
Kiedy chcemy dodać odbiornik kliknięć do przycisku w kodzie Java, używamy OnClickListener
.
Gdy chcemy dodać odbiornik kliknięć do przycisku w pliku układu, używamy android:onClick="your_method"
Jeśli używasz wariantu XML, musisz wdrożyć your_method
w swojej klasie aplikacji.
Istnieje kilka powodów, dla których warto programowo ustawić narzędzie OnClickListener. Po pierwsze, jeśli chcesz zmienić zachowanie przycisku podczas działania aplikacji. Możesz skierować swój przycisk na inną metodę całkowicie lub po prostu wyłączyć przycisk ustawiając OnClickListener, który nic nie robi.
Po zdefiniowaniu detektora za pomocą atrybutu onClick, widok szuka metody o tej nazwie tylko w działaniu hosta. Programowe ustawienie OnClickListener pozwala kontrolować zachowanie przycisku z innego miejsca niż jego aktywność hosta.Będzie to bardzo istotne, gdy dowiemy się o Fragmentach, które są w zasadzie mini-działaniami, co pozwala tworzyć kolekcje wielokrotnego użytku z własnym cyklem życia, które następnie można połączyć w działania. Fragmenty zawsze muszą używać OnClickListeners do kontrolowania swoich przycisków, ponieważ nie są działaniami i nie będą wyszukiwane dla detektorów zdefiniowanych w onClick.
każdy wspomniał o OnClickListener
listner, który zawsze używany. Chcę dodać jeszcze jeden punkt działa jako metoda i nie musi być referencyjny, więc jest przydatny, gdy trzeba dodać przycisk po wykonaniu jakiegoś zadania, więc nie można go przywołać dla OnClickListener
.
Dla example
gdy tworzymy viewpager tylko układ (brak fragmentów) jeśli umieścić przycisk w dowolnym układzie to insialized tylko wtedy, gdy układ widoczny, więc nie można użyć metody findViewById
dla Buttona w tym przypadku becomed przydatna wystarczy umieścić ta metoda w działaniu !!
Oto prosta terminologia Jeśli jesteś w domu i chcesz zadzwonić do kogoś .. możesz zadzwonić bezpośrednio i mogą słuchać. (użyj onclick). Ale jeśli jesteś na zewnątrz i chcesz zadzwonić do kogoś w domu, musisz użyć telefonu lub Internetu (musisz użyć onclicklistener). W Androidzie wszystko zaczyna się od domu, tj. main_activity W ten sposób Android ułatwia pracę; kiedy masz jedno działanie, nie musisz dołączać detektora, tworzyć obiektu i go definiować. Wystarczy użyć onClick. Onclicklistener są zwykle używane w Fragments. Więc zachowaj kodowanie.
- 1. Jaka jest różnica między zdarzeniem button.click a zdarzeniem button.command?
- 2. C# Różnice w cenie między zdarzeniem DoubleClick a zdarzeniem MouseDoubleClick
- 3. Różnica między onClickListener i onItemClickListener
- 4. Różnica między zdarzeniem zdarzeń wskaźnika w jQuery a zwykłym JavaScriptem
- 5. Jaka jest różnica między poleceniem WPF a zdarzeniem w WPF?
- 6. Jaka jest różnica między zdarzeniem "DOMContent" i "zdarzeniem ładowania"
- 7. Jaka jest różnica między zdarzeniem webrole onStart() a zdarzeniem Application_Start() global.asax?
- 8. różnica między onClick() i onChange() (przyciski radiowe)
- 9. jaka jest różnica między <button onclick = ...> i <a href="#" onclick=.../>
- 10. Różnica między obiektem a *?
- 11. Różnica między jquery a $
- 12. Różnica między mousedown a kliknięciem jquery
- 13. Różnica między String [] a i String ... a
- 14. Różnica między bip pid a $$
- 15. Różnica między kodowaniem a sortowaniem?
- 16. Różnica między onbeforeunload a onunload
- 17. Różnica między OpenCV a OpenCL
- 18. Różnica między wysokością a tłumaczeniemZ
- 19. Różnica między ApplicationInfo a PackageInfo?
- 20. Różnica między CMAKE_PROJECT_NAME a PROJECT_NAME?
- 21. Różnica między autoconf a autoreconf
- 22. Różnica między transakcją a transakcjąScope
- 23. Różnica między File.Copy a File.Move
- 24. Różnica między _declspec a __declspec?
- 25. Różnica między repozytorium a usługą?
- 26. Różnica między CCNode a CCLayer?
- 27. różnica między * y ++ a ++ * y?
- 28. Różnica między IPFS a Filecoin?
- 29. Różnica między systemem a shell_exec
- 30. Różnica między Redis a kafka
Zaakceptowano złą odpowiedź. Sean Owen lub userSeven7s są poprawne. – Reno
możliwy duplikat [Czym dokładnie różni się atrybut android: onClick XML od setOnClickListener?] (Http://stackoverflow.com/questions/4153517/how-exactly-does-the-androidonclick-xml-attribute-differ-from- setonclicklistener) –