2017-09-06 25 views
0

获得标签的父(TabLayout)我有相同的片段2个TabLayouts和他们每个人拥有两个标签:如何从TabSelectedListener

TabLayout studentsTab = view.findViewById(R.id.students_tab); 
studentsTab.addTab(studentsTab.newTab().setText("one")); 
studentsTab.addTab(studentsTab.newTab().setText("two")); 
studentsTab.setTag("students"); 

TabLayout teachersTab = view.findViewById(R.id.teachers_tab); 
teachersTab.addTab(teachersTab.newTab().setText("one")); 
teachersTab.addTab(teachersTab.newTab().setText("two")); 
teachersTab.setTag("teachers"); 

,而不是创建两个setOnTabSelectedListener听众我实现TabLayout.OnTabSelectedListener和由:

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

,现在我有这样的方法:

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

和我想要确定哪个选项卡触发了选项卡选择。是学生表演还是教师表演?

我试图检查是否tab.getTag()。等于(“学生”),但tab.getTag()为空。 当我调试应用程序时,我在tab.mParent上有TabLayout,但它不可访问。

我找不到办法做到这一点。任何帮助找到父母将不胜感激。

回答

0

在将它们添加到TabLayout之前,您可以设置与选项卡关联的标签。如果您将“学生”或“教师”的标签添加到正确的选项卡,则可以参考onTabSelected()中的信息。

查看文档:TabLayout专门查看getTag()setTag()

+0

我真的试图做到这一点之前,我张贴的问题,但getTag是始终为空。所以我觉得setTag是用于布局的,getTag是用于标签本身的。 – user2396640

+0

很确定我以前使用过这种方法,并能看到我添加到选项卡的相关标签。该文档还明确指出,setTag函数用于“为此选项卡提供任意对象以供以后使用”。 @ user2396640 – DMP

0

尝试设置contentDescription像这样

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

,然后将每个选项卡,在onTabSelected方法得到contentDescription

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