-1

Je crée une vue personnalisée et l'utilise dans une activité xml puis définissez android:onClick="buttonOnClick". J'ai défini buttonOnClick comme public et l'écrire dans son activité et définir tools:context.
Activity.javaSet onClick in xml pour une vue personnalisée dans android in't fonctionne sur une version

public void buttonOnClick(View view) { 
     validate(view); 
    } 

layout.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    ... 
    tools:context="com.test.myapp.Activity"> 

    <com.test.myapp.GifImageViewComp 
     .... 
    android:onClick="buttonOnClick" /> 

il travaille sur Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP mais dans d'autres OS, xml affichage personnalisé attribut onclick essayer de trouver gestionnaire de la classe de vue au lieu de l'activité.

Je ne veux pas utiliser la mise en œuvre de onClick ou setOnClickListener sur tous les plans, je veux utiliser onClick dans la présentation de l'activité

+0

à la place, utiliser onClickListener en classe, et en utilisant l'identifiant de votre CustomView, appelez onClick() –

+0

Avez-vous mis 'android: cliquable = "true"' ??? .Pour une bonne pratique utiliser onClickListener –

+0

oui, régler 'android: clickable =" true "' –

Répondre

1

Il est tout simplement pas clairement la relation entre un bouton dans votre xml et une méthode dans votre activité qui réagit aux événements click à moins que vous explicitement le voir défini dans votre fichier Java. Avec l'approche android: onClick vous pouvez même oublier que vous avez un bouton dans votre mise en page ou qui est la méthode qui gère son événement onClick.

Source

Vous devez utiliser OnClickListener au lieu de android: onClick.

Définition de l'interface pour un rappel à appeler lorsqu'une vue est cliquée sur .

Cette méthode prend la référence à l'écouteur et enregistre un rappel à appeler lorsque la vue est cliquée.

Pour votre information

Assurez-vous que vous définissez android:clickable="true" en XML. vous devez spécifier cet attribut.

<com.test.myapp.GifImageViewComp 
    android:clickable="true" 
    android:onClick="buttonOnClick" />