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.