2013-07-13 8 views
7

Es sollte einfach sein. Aber ich bin mir nicht sicher, wo etwas nicht stimmt. Ich versuche, klicken Sie auf den Textview mitsetOnClickListener auf 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) { 

       } 
      }); 
     } 

Dann xml für Textview zu fangen ist

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

Aber wenn ich auf der Textview klicken, es geht nicht in onClick() -Methode. Was fehlt mir? Dank

+1

versuchen, Android zu entfernen: onClick = "onClick" –

Antwort

22

ändern Sie können diese

android:onClick="onClick" 

entfernen oder diese

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

      } 
     }); 

entfernen und haben diese

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

android:onClick="onClick"/> // besser die Methode umbenennen Verwirrung Sie

Auch dieses

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

So Ihre Textview initialisieren, wie unten

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

Diese Zeile: android:onClick="onClick" Android Tells für ein Verfahren mit dieser Signatur in der Tätigkeit zu suchen:

public void onClick(View v) 

dies nicht Ihre Absicht war, wie Sie die OnClickListener in Ihrem Code und Port festgelegt haben In der Aktivität wurde keine dedizierte Methode dafür erstellt. Sie können also entweder einfach die android:onClick="onClick" aus Ihrer XML-Datei entfernen oder den von Ihnen erstellten OnClick-Listener entfernen und in eine onClick-Methode ändern (und den Namen vorzugsweise in etwas Besseres als onClick ...

1

ändern müssen zu vermeiden:

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

zu

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

und es besteht keine Notwendigkeit von android:onClick="onClick" in Ihrem XML-Code, wenn Sie

1

mit Java-Code tun dies wünschen Wenn Sie Ihren Code ändern, um diese Struktur zu haben, wird es funktionieren:

public void runNextTask(){ 
    ... 
} 

public void onClick(View v) { 

} 

Wie Sie in Ihrem XML sagen, um den Klick für die Textansicht (android:onClick="onClick") in onClick Modul zu erfassen, müssen Sie nicht ein OnClick Listener in Ihrem Java-Code hinzufügen.

Verwandte Themen