2013-07-13 9 views
7

Dovrebbe essere semplice. Ma non sono sicuro di dove qualcosa sia sbagliato. Cerco di catturare al clic sul TextView consetOnClickListener su TextView

 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) { 

       } 
      }); 
     } 

Poi XML per TextView è

<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"/> 

Ma quando clicco sul TextView, non va in onClick() metodo. Cosa mi manca? Grazie

+1

provare a rimuovere android: onClick = "onClick" –

risposta

22

È possibile rimuovere questo

android:onClick="onClick" 

O Rimuovi questa

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

      } 
     }); 

E avere questo

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

android:onClick="onClick"/> // meglio rinominare il metodo per evitare confusione

Inoltre si dispone di questo

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

Così inizializzare il TextView come di seguito

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

Questa linea: android:onClick="onClick" Dice Android per guardare l'attività per un metodo con questa firma:

public void onClick(View v) 

Questa non era la tua intenzione, come hai impostato l'OnClickListener all'interno del vostro codice e rifugio abbiamo creato il metodo dedicato per questo nell'attività. Quindi le tue opzioni sono semplicemente rimuovere il android:onClick="onClick" dal tuo file xml o rimuovere il listener in clic che hai creato e modificarlo in un metodo onClick (e preferibilmente cambiare il nome in qualcosa di meglio di onClick ...

1

Cambio:

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

a

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

e non v'è alcuna necessità di android:onClick="onClick" nel codice XML se si vuole fare questo con il codice Java

1

Se modificare il codice per avere tale struttura che funzionerà:

public void runNextTask(){ 
    ... 
} 

public void onClick(View v) { 

} 

come stai dicendo nel tuo xml di catturare il clic per la visualizzazione del testo (android:onClick="onClick") nel modulo onClick, non è necessario aggiungere un listener onClick nel codice java.