La vista inflada no captura el evento onClick

Tengo una vista de la plantilla que parece;

Template.xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/contentLayout" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@color/view_background" android:gravity="center_vertical" tools:context=".MainActivity" > <Button android:id="@+id/btnMultiple" android:layout_width="0dp" android:layout_height="150dp" android:layout_marginLeft="5dp" android:layout_marginRight="5dp" android:layout_weight="1" android:background="@drawable/button_backgroundblue" android:onClick="btnMultiple_clicked" android:tag="4" android:text="@string/mc_abcd" android:textColor="@drawable/button_textcolor" android:textSize="@dimen/h2" /> 

Estoy creando esta vista programáticamente y después agrego esta visión en ViewFlipper como como;

Activity_main.java

 public void btnCreateView_clicked(View view) { ViewFlipper viewFlipper = (ViewFlipper)findViewById(R.id.flipper); View myView = LayoutInflater.from(getApplicationContext()).inflate(R.layout.template, viewFlipper, false); viewFlipper.addView(myView); viewFlipper.showNext(); // Showing lastly created myView successfully. } 

También mi actividad tiene función pública como semejante;

Activity_main.java

  public void btnMultiple_clicked(View view) { //Save the world ! } 

Cuando presiono el botón btnCreateView desde la primera vista, se crea con éxito la plantilla (myView) y luego se agrega a ViewFlipper. Cuando hago clic en btnMultiple estoy recibiendo error y mi aplicación se bloquea; "No se pudo encontrar un método btnMultiple_clicked (View) en la clase de actividad android.app.Application para onClick handler on view class android.widget.Button con id 'btnMultiple'" Estoy seguro de que existe el método existente btnMultiple_clicked (View).

¡PD! Si agrego el oyente a btnMultiple programmatically va a trabajar pero me pregunto porqué "android: onClick =" btnMultiple_clicked "" no trabaja?

Android busca el método definido en el atributo onClick en la Activity . El problema en tu código es que utilizaste para la inicialización LayoutInflater el LayoutInflater la Application y no el Context de la Activity para que el método no se encuentre allí (el Context se pasa a la View ). Utilizar:

 View myView = LayoutInflater.from(this).inflate(R.layout.template, viewFlipper, false); 

O cualquier otra referencia que apunte a la Activity donde se usarán esos botones. Este es un buen ejemplo de por qué debería usar en la mayoría de los casos el Context de la Activity .

  • No se pudo encontrar un método onClick (View) en la actividad
  • efecto de clic de cuadrícula
  • La forma más fácil de tener el botón de abrir el navegador a la URL específica
  • Vistas superpuestas de Android y OnClick
  • Android, ¿Cómo puedo obtener texto de TextView en OnClick
  • Vista no se puede resolver a un tipo
  • ButterKnife onclick no funciona
  • Animación de android imageview onClick
  • OnClick PendingIntent en widget a veces no funciona
  • Android: ¿Cómo harías que los botones no se pudieran hacer clic durante algún tiempo?
  • Android ListView con elementos que se pueden hacer clic en sus filas provoca problemas de desplazamiento continuo
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.