2017-09-06 1 views
0

Ich habe zwei TabLayouts auf demselben Fragment und jeder von ihnen hält zwei Registerkarten erhalten von:Wie Tab der Eltern (TabLayout) von TabSelectedListener

studentsTab.setOnTabSelectedListener(this); 
teachersTab.setOnTabSelectedListener(this); 

und jetzt habe ich diese Methode:

@Override 
public void onTabSelected(TabLayout.Tab tab) { 
// detect which TabLayout? 
} 

und ich möchte herausfinden, welcher Tab die Tab-Auswahl ausgelöst hat. Ist es StudentenTab oder LehrerTab?

Ich habe versucht zu überprüfen, ob tab.getTag(). Gleich ("Studenten"), aber die tab.getTag() ist null. Wenn ich die App debuggen habe ich das TabLayout auf tab.mParent, aber es ist nicht zugänglich.

Ich konnte keinen Weg finden, es zu tun. Jede Hilfe, um den Elternteil zu finden, würde geschätzt werden.

Antwort

0

Sie können ein mit Ihren Tabs verknüpftes Tag festlegen, bevor Sie sie zu TabLayout hinzufügen. Wenn Sie der richtigen Registerkarte ein Tag "Student" oder "Lehrer" hinzufügen, können Sie diese Informationen in der onTabSelected() beziehen.

Schauen Sie sich die Dokumentation an: TabLayout speziell mit Blick auf die getTag() und setTag().

+0

Einstellung eigentlich habe ich versucht, es zu tun, bevor ich die Frage gestellt, aber der getTag ist immer Null. also dachte ich mir, dass setTag für das Layout und getTag für die Registerkarte selbst ist. – user2396640

+0

Ich bin mir ziemlich sicher, dass ich diese Methode bereits verwendet habe und das zugehörige Tag, das ich der Registerkarte hinzugefügt habe, sehen konnte. Das Dokument legt auch klar fest, dass die setTag-Funktion verwendet wird, um "dieser Registerkarte ein beliebiges Objekt zu geben, das für die spätere Verwendung gespeichert werden soll". @ user2396640 – DMP

0

Versuchen content für jeden Reiter wie diese

for(int i=0; i<studentsTab.getTabCount; i++) { 
    TabLayout.Tab tab = studentsTab.getTabAt(i); 
    tab.setContentDescription("Text"); 
} 

Und dann, in der onTabSelected Methode erhält die content

public void onTabSelected(TabLayout.Tab tab) { 
    tab.getContentDescription(); 
} 
Verwandte Themen