我在同一个片段上有两个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,但它无法访问。
我无法找到办法。任何寻找父母的帮助都将不胜感激。
答案 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();
}