SetOnClickListener en TextView

Debe ser sencillo. Pero no estoy seguro de que algo esté mal. Intento coger en chascar encendido el TextView con

public void runNextTask(){ final View addView = getLayoutInflater().inflate(R.layout.addnewtracker, null); final TrackerInfo newInfo = new TrackerInfo(); //set up for model selection TextView modelTextview = (TextView)addView.findViewById(R.id.modelEdit); modelTextview.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { } }); } 

Entonces xml para TextView es

  <TextView android:id="@+id/model" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/Tracker_model" android:clickable="true" android:onClick="onClick"/> 

Pero cuando hago clic en TextView, no entra en el método onClick (). ¿Qué me estoy perdiendo? Gracias

Puede eliminar este

  android:onClick="onClick" 

O eliminar este

  modelTextview.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { } }); 

Y tener esto

  public void onClick(View v) { // do something } 

android:onClick="onClick"/> // mejor para cambiar el nombre del método para evitar confusiones

También tienes esto

  <TextView android:id="@+id/model" // id is model 

Por lo tanto, inicialice su texto como se muestra a continuación

  TextView modelTextview = (TextView)addView.findViewById(R.id.model); 

Esta línea: android:onClick="onClick" Le dice a Android que busque en la actividad un método con esta firma:

 public void onClick(View v) 

Esta no era su intención, ya que ha configurado OnClickListener dentro de su código y no ha creado el método dedicado para ello en la actividad. Así que tus opciones son simplemente para eliminar el android:onClick="onClick" de su archivo xml o eliminar el oyente de clic que ha creado y cambiarlo a un método onClick (y preferiblemente cambiar su nombre a algo mejor que onClick. .

Cambio :

  TextView modelTextview = (TextView)addView.findViewById(R.id.modelEdit); 

a

  TextView modelTextview = (TextView)addView.findViewById(R.id.model); 

Y no hay necesidad de android:onClick="onClick" en tu código xml si quieres hacer esto con código java

Si cambia su código para tener esta estructura funcionará:

 public void runNextTask(){ ... } public void onClick(View v) { } 

Como usted está diciendo en su xml para capturar el clic para la vista de texto ( android:onClick="onClick" ) en el módulo onClick , no es necesario agregar un oyente onClick en su código java.

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.