2011-09-17 12 views
20

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?

+3

Zaakceptowano złą odpowiedź. Sean Owen lub userSeven7s są poprawne. – Reno

+0

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) –

Odpowiedz

27

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ą.

+0

Tak smutne, że istnieje głosowanie w Androidzie, które w dół głosuje na właściwe odpowiedzi :( – Reno

23

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.

11

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

+1 dla krótkiego n do opisu punktu .. –

0

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.

20

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.

  1. 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).

  2. 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ęki OnClickListener

    • 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 od View, 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.
0

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... 
    } 
} 
0

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.

5
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.

0

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"/> 
0

wykorzystujemy OnClick XML i OnClickListner kodem java. Oba są używane do wykonywania funkcji.

0

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.

0

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.

0

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 !!

0

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.

Powiązane problemy