2011-09-17 10 views
20

Sto sempre usando l'evento onclick() nella maggior parte dei miei progetti. Ma, ho letto su OnClickListener(). Qualcuno può dire qual è la differenza tra questi due? E quale è il migliore da usare nell'applicazione Android ?.Differenza tra evento OnClick() e OnClickListener?

+3

Hai accettato la risposta sbagliata. Sean Owen o userSeven7s è corretto. – Reno

+0

possibile duplicato di [Come funziona esattamente l'androide: l'attributo onClick XML è diverso da setOnClickListener?] (Http://stackoverflow.com/questions/4153517/how-exact-does-the-androidonclick-xml-attribute-differ-from- setonclicklistener) –

risposta

27

Non sono sicuro che la domanda sia chiara. View.OnClickListener è un'interfaccia che definisce il metodo onClick(View). Se hai una classe che intende ascoltare i clic, devi implementare l'interfaccia (se non lo stai già estendendo), e implementare anche questo metodo. Devi usare entrambi; non sono in qualche modo alternative.

+0

Così triste che c'è un anello di votazione in Android che giù-vota le risposte giuste :( – Reno

23

OnClickListener è l'interfaccia che è necessario implementare e può essere impostata su una vista in codice java.

Ultimamente Android ha aggiunto un attributo xml alle viste chiamate android:onclick, che possono essere utilizzate per gestire i clic direttamente nell'attività della vista senza dover implementare alcuna interfaccia.

Entrambe funzionano allo stesso modo, solo che viene impostato tramite codice java e l'altro tramite codice xml.

11

OnClickListener è ciò che aspetta che qualcuno in realtà clic, determina onclick cosa succede quando un utente fa clic

l'ascoltatore è una classe, l'onclick è un metodo, questa distinzione non è molto utile nei casi più semplici, ma se si vogliono essere più complicato diventa più necessario

+1

+1 per breve n alla descrizione del punto .. –

0

Usiamo

public void button_onClick_name(View v) 
{ 
------- 
} 

di definire un metodo fuori della classe. Ma per definire un componente Fare clic su un evento all'interno di una classe, usiamo il listener di onclick.

20

Sto assumendo per onClick che si utilizza è quello che si definisce in XML Layout. Questi due sono alternativi che servono la stessa funzione ma implementati in modo diverso.

  1. La onClick con rilegatura in Layout XML funzione è un'associazione tra onClick e la funzione che sarà chiamata. La funzione deve avere un argomento (il View) affinché onClick possa funzionare.

  2. Un OnClickListener è un'interfaccia che qualsiasi classe potrebbe implementare. Dal momento che è un'interfaccia che qualsiasi classe potrebbe implementare, questa ha più flessibilità e più complessità nella sua forma. Poche flessibilità che potreste avere con OnClickListener

    • Si potrebbe facilmente scambiare un'implementazione di ascoltatori con un altro se necessario.
    • Un OnClickListener consente di separare l'azione/il comportamento dell'evento click dallo View che attiva l'evento. Mentre per casi semplici questo non è un grosso problema, per la gestione complessa degli eventi, questo potrebbe significare migliore leggibilità e manutenibilità del codice
    • Poiché OnClickListener è un'interfaccia, la classe che lo implementa ha flessibilità nel determinare le variabili e i metodi dell'istanza di cui ha bisogno per gestire l'evento. Ancora una volta, questo non è un grosso problema in casi semplici, ma per casi complessi, non vogliamo mescolare le variabili/metodi che si riferiscono alla gestione degli eventi con il codice della Vista che attiva l'evento.
0

consideriamo "OnClickListener" come un ragazzo che è in attesa l'utente a fare clic sul pulsante della vostra applicazione. Quindi il tuo uomo eseguirà il tuo metodo OnClick().

Devi inserire un ID nel tuo pulsante nel tuo file xml, quindi assegnargli un nome nel tuo file MainActivity.java. Quindi imposta un click listener al tuo ragazzo. E aggiungi il tuo metodo onClick. Ecco perché onClick è legato alla View.OnClickListener interfaccia: https://developer.android.com/reference/android/view/View.OnClickListener.html

Esempio:

Button myButton = (Button)findViewById(R.id.myButton); 
myButton.setOnClickListener(new View.OnClickListener(){ 
    @override 
    public void onClick(View v) { 
     // your method... 
    } 
} 
0

Ci sono un paio di motivi per cui si potrebbe desiderare di impostare un OnClickListener di programmazione. La prima è se si desidera modificare il comportamento del pulsante mentre l'app è in esecuzione. Puoi puntare il tuo pulsante su un altro metodo completamente, o semplicemente disabilitare il pulsante impostando uno OnClickListener che non fa nulla.

Quando si definisce un listener utilizzando l'attributo onClick, la vista cerca un metodo con quel nome solo nella sua attività host. L'impostazione programmatica di OnClickListener consente di controllare il comportamento di un pulsante da un luogo diverso dall'attività dell'host. Ciò diventerà molto rilevante per Fragments, Fragments, per cui è necessario utilizzare sempre OnClickListeners per controllare i pulsanti, poiché non sono Attività e non verranno cercati listener definiti in onClick.

5
Button button = (Button)findViewById(R.id.buttonId); 
button.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     // Do stuff 
    } 
}); 

OnClickListener è un'interfaccia e onClick è il metodo di OnClickListener.

0

È possibile aggiungere l'attributo android:onClick="your_method" nel codice XML.

Esempio:

<Button 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="Click" 
    android:onClick="your_method"/> 
0

Usiamo OnClick in XML e OnClickListner in java codice. Entrambi sono utilizzati per eseguire una funzione.

0

Quando vogliamo aggiungere click listener al pulsante nel codice Java, utilizziamo OnClickListener.
Quando vogliamo aggiungere click listener al pulsante nel file di layout, utilizziamo android:onClick="your_method"
Se si utilizza la variante XML, è necessario implementare your_method nella classe dell'app.

0

Ci sono un paio di motivi per cui si consiglia di impostare un OnClickListener al livello di programmazione. La prima è se si desidera modificare il comportamento del pulsante mentre l'app è in esecuzione. Puoi puntare il tuo pulsante su un altro metodo completamente, o semplicemente disabilitare il pulsante impostando un OnClickListener che non fa nulla.

Quando si definisce un listener utilizzando l'attributo onClick, la vista cerca un metodo con quel nome solo nella sua attività host. L'impostazione di un OnClickListener al livello di programmazione consente di controllare il comportamento di un pulsante da un luogo diverso dall'attività dell'host.Questo diventerà molto rilevante quando apprenderemo di Fragments, che sono fondamentalmente mini-attività, che ti permetteranno di creare raccolte riutilizzabili di punti di vista con il loro ciclo di vita, che potrà poi essere assemblato in attività. I frammenti devono sempre utilizzare OnClickListeners per controllare i loro pulsanti, poiché non sono Attività e non verranno cercati gli ascoltatori definiti in onClick.

0

tutti hanno menzionato il listener OnClickListener che si è sempre utilizzato. voglio aggiungere un altro punto funziona come metodo e non ha bisogno di essere riferimento, quindi è utile quando devi aggiungere il pulsante dopo aver eseguito qualche attività in modo da non averlo fatto riferimento per OnClickListener.

Per un example quando creiamo viewpager solo con il layout (nessun frammento) se si mette un pulsante in qualsiasi layout è insialized solo quando il layout visibile in modo non è possibile utilizzare il metodo findViewById per Button in quel caso becomed utile appena messo quel metodo in attività !!

0

Ecco la semplice terminologia Se siete a casa e U volete chiamare qualcuno, potete chiamare direttamente e loro possono ascoltarvi. (usa onclick). Ma se sei fuori e vuoi chiamare qualcuno a casa, devi usare il telefono o Internet (devi usare onclicklistener). In Android tutto parte da casa, io. main_activity Questo è il modo in cui Android facilita il lavoro; quando hai un'attività, non devi allegare un listener, creare un oggetto e definirlo. Basta usare onClick. Onclicklistener sono generalmente utilizzati in Frammenti. Quindi continua a codificare.

Problemi correlati