OnClickListener auf Tabs funktioniert nicht

8

Grüße,

Ich versuche, das Click - Ereignis zu erhalten, wenn ich auf die aktuell ausgewählte Registerkarte meiner TabActivity klicke. Der onTabChangedHandler wird nur aufgerufen, wenn die Registerkarte geändert wird, nicht, wenn auf die gerade aktive Registerkarte geklickt wird. Der Debugger teilt mir mit, dass ich den OnClickListener für das TabWidget in meinem TabHost registriert habe.

Melde ich mich für die falsche Ansicht an?

Ich kann auch kein Kontextmenü für die Tabs erstellen, nur für den Inhalt, hängt dieses Problem zusammen?

%Vor%     
Sameer 30.06.2009, 08:42
quelle

4 Antworten

19

Wenn Sie sehen möchten, dass ein bestimmter Tab angeklickt wurde, müssen Sie Ihren Listener zum Tab selbst hinzufügen, nicht zum TabHost.

Die Hierarchie der Ansichten in einer Tab-Implementierung ist:

  • TabHost
    • TabWidget
      • (Registerkarte)
      • (Registerkarte)
    • FrameLayout

Die Registerkarten werden zur Laufzeit hinzugefügt, indem: tabHost.addTab(tabHost.newTabSpec(""));

aufgerufen wird

Sie können dann eine Handle für die einzelnen Registerkarten erhalten, indem Sie Folgendes aufrufen: getTabWidget().getChildAt(4);

Im Wesentlichen fügen Sie Ihr OnClickListener zu einem Kind des TabWidget hinzu. Sie können jetzt die Klicks auf Ihrem individuellen Tab abholen. Dies überschreibt jedoch das Standardverhalten, das den Inhalt ändert, wenn auf eine Registerkarte geklickt wird. Um deine Inhalte zu ändern, muss dein OnClickListener das für dich tun.

Hier ist ein vollständiges Beispiel, mit dem Sie das Klickereignis abfangen und den Inhalt unter dem Tab ändern können:

%Vor%     
Milo 21.05.2010 19:17
quelle
10

Verwenden Sie setOnTabChangedListener anstelle von OnClickListener ;)

%Vor%     
Jorgesys 05.02.2010 01:41
quelle
2

Ihre Klausel ist falsch, verwenden Sie:

...

%Vor%

...

    
martin 21.06.2010 14:34
quelle
0
  

in meinen Code, es zeigt einige Fehler und fordert mich auf, neue Methoden zu erstellen   diese Namen wie getTabWidget (), getTabHost () usw. Warten auf Ihre   Antwort.

Versuchen Sie es

%Vor%     
dicenice 31.05.2013 09:18
quelle