如何从TabSelectedListener获取Tab的父级(TabLayout)

时间:2017-09-06 12:13:38

标签: android android-layout android-tabs

我在同一个片段上有两个TabLayout,每个都有两个标签:

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?
}

我想知道哪个标签触发了标签选择。是studentTab还是teacherTab?

我试图检查tab.getTag()。equals(" students")但tab.getTag()是否为空。 当我调试应用程序时,我在tab.mParent上有TabLayout,但它无法访问。

我无法找到办法。任何寻找父母的帮助都将不胜感激。

2 个答案:

答案 0 :(得分:0)

您可以在将标签添加到TabLayout之前设置与标签相关联的标签。如果您将“student”或“teacher”的标记添加到正确的标签中,则可以在onTabSelected()中引用该信息。

查看文档:{​​{3}},专门查看getTag()setTag()

答案 1 :(得分: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();
}