如何从TabSelectedListener
问题描述:
获得标签的父(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,但它不可访问。
我找不到办法做到这一点。任何帮助找到父母将不胜感激。
答
在将它们添加到TabLayout
之前,您可以设置与选项卡关联的标签。如果您将“学生”或“教师”的标签添加到正确的选项卡,则可以参考onTabSelected()
中的信息。
查看文档:TabLayout专门查看getTag()
和setTag()
。
答
尝试设置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();
}
我真的试图做到这一点之前,我张贴的问题,但getTag是始终为空。所以我觉得setTag是用于布局的,getTag是用于标签本身的。 – user2396640
很确定我以前使用过这种方法,并能看到我添加到选项卡的相关标签。该文档还明确指出,setTag函数用于“为此选项卡提供任意对象以供以后使用”。 @ user2396640 – DMP