2013-07-13 13 views
7

To powinno być proste. Ale nie jestem pewien, gdzie coś jest nie tak. staram się złapać na kliknięcie na TextView zsetOnClickListener na 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) { 

       } 
      }); 
     } 

Następnie xml dla TextView jest

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

Ale gdy klikam na TextView, nie iść do onClick() metody. Czego mi brakuje? Dzięki

+1

spróbuj usunąć androida: onClick = "onClick" –

Odpowiedz

22

można usunąć ten

android:onClick="onClick" 

lub usunąć

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

      } 
     }); 

I mieć ten

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

android:onClick="onClick"/> // lepiej zmienić nazwę metody, aby uniknąć nieporozumień

też masz ten

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

Tak Inicjalizacja swoją TextView jak poniżej

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

Linia: android:onClick="onClick" Informuje Android szukać w działalności na sposób z tym podpisem:

public void onClick(View v) 

To nie był twój zamiar, jak masz ustawić OnClickListener wewnątrz kodu i przystani utworzyło dedykowaną dla niego metodę w działaniu. Dostępne opcje polegają po prostu na usunięciu z pliku xml pliku android:onClick="onClick" lub usunięciu utworzonego obiektu nasłuchiwania kliknięcia i zmianie go na metodę onClick (i lepiej zmienić nazwę na coś lepszego niż onClick ...

1

Zmiana:

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

do

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

i nie ma potrzeby android:onClick="onClick" w kodzie XML, jeśli chcesz to zrobić z kodu java

1

W przypadku zmiany kodu, aby mieć taką strukturę to będzie działać:

public void runNextTask(){ 
    ... 
} 

public void onClick(View v) { 

} 

tak, jak mówisz w swoim xml, aby uchwycić kliknięcie dla widoku tekstowego (android:onClick="onClick") w module onClick, nie musisz dodawać odbiornika onClick w kodzie java.

Powiązane problemy