Differenza tra evento OnClick () e OnClickListener?

Uso sempre 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 ?.

Non sono sicuro che la domanda sia chiara. View.OnClickListener è un’interfaccia, che definisce il metodo onClick(View) . Se hai una class 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.

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

Recentemente Android ha aggiunto un attributo xml alle viste chiamate android:onclick , che può essere utilizzato per gestire i clic direttamente nell’attività della vista senza dover implementare alcuna interfaccia.

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

Sto assumendo da 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. Il collegamento onClick con funzione in XML Layout è un legame tra onClick e la funzione che chiamerà. La funzione deve avere un argomento (la View ) affinché onclick possa funzionare.

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

    • Si potrebbe facilmente scambiare un’implementazione ascoltatore con un’altra, se necessario.
    • Un OnClickListener ti consente di separare l’azione / il comportamento dell’evento click dalla View che triggers l’evento. Mentre per i casi semplici questo non è un grosso problema, per la gestione di eventi complessi, questo potrebbe significare una migliore leggibilità e manutenibilità del codice
    • Poiché OnClickListener è un’interfaccia, la class che lo implementa ha flessibilità nel determinare le variabili di istanza e i metodi 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 triggers l’evento.

OnClickListener è ciò che attende che qualcuno faccia effettivamente clic, onclick determina cosa succede quando qualcuno fa clic

l’ascoltatore è una class, l’onclick è un metodo, questa distinzione non è molto utile in casi semplici, ma se vuoi essere più complicato diventa più necessario

 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 è un metodo di OnClickListener .

Noi usiamo

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

per definire un metodo fuori dalla class. Ma per definire un evento di componente all’interno di una class, usiamo il listener di onclick.

Esistono un paio di motivi per cui potresti voler impostare a livello di OnClickListener un OnClickListener . 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 definisci un listener utilizzando l’attributo onClick , la vista cerca un metodo con quel nome solo nella sua attività host. L’impostazione di un OnClickListener consente di controllare il comportamento di un pulsante da un luogo diverso dall’attività dell’host. Questo diventerà molto importante per Fragments , Fragments sempre bisogno di usare OnClickListeners per controllare i loro pulsanti, dal momento che non sono Attività, e non sarà cercato per gli ascoltatori definiti in onClick .

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

Considera “OnClickListener” come un ragazzo che sta aspettando che il tuo utente faccia clic sul pulsante della tua app. Quindi il tuo ragazzo eseguirà il tuo metodo OnClick () .

Devi inserire un id per il 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 è associato all’interfaccia View.OnClickListener: 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... } } 

Puoi aggiungere l’attributo android:onClick="your_method" nel tuo XML.

Esempio:

   

Quando vogliamo aggiungere click listener al pulsante nel codice Java, usiamo 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 class dell’app.

Esistono un paio di motivi per cui potresti voler impostare a livello di codice un OnClickListener. 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 definisci 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.

tutti hanno menzionato il OnClickListener OnClickListener che si è sempre utilizzato. voglio aggiungere un altro punto android:onClick funziona come metodo e non ha bisogno di essere riferimento, quindi è utile quando devi aggiungere un pulsante dopo aver eseguito qualche attività, quindi non puoi fare riferimento a OnClickListener .

Per un example quando creiamo un viewpager con un solo layout (senza frammenti) se metti un pulsante in qualsiasi layout esso è reso inializzato solo quando il layout è visibile, quindi non puoi usare il metodo findViewById per Button in quel caso android:onClick è utile solo per mettere quel metodo in attività !!

Ecco la semplice terminologia Se sei a casa e U vuoi chiamare qualcuno, puoi chiamare direttamente e loro possono ascoltarti. (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, ovvero main_activity Questo è il modo in cui Android facilita il tuo lavoro; quando hai un’attività, non devi albind un listener, creare un object e definirlo. Basta usare onClick. Onclicklistener sono generalmente utilizzati in Frammenti. Quindi continua a programmare.

Esistono un paio di motivi per cui potresti voler impostare a livello di OnClickListener un OnClickListener . 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 definisci un listener utilizzando l’attributo onClick , la vista cerca un metodo con quel nome solo nella sua attività host. L’impostazione di un OnClickListener consente di controllare il comportamento di un pulsante da un luogo diverso dall’attività dell’host. Questo diventerà molto rilevante quando parliamo di Fragments, che sono fondamentalmente mini-attività, che ti permettono di creare raccolte riutilizzabili di punti di vista con il loro ciclo di vita, che può quindi 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 .