Java 如何按ID设置活动选项卡?
当前方法是tabHost.setCurrentTab(index)by index,但我想为该操作使用Tab的IDJava 如何按ID设置活动选项卡?,java,android,Java,Android,当前方法是tabHost.setCurrentTab(index)by index,但我想为该操作使用Tab的ID 任何人都可以告诉我这是可能的吗?请以更具描述性的方式说明您的问题,任何我理解的方式,请查看代码 intent = new Intent(this, HomeGroup.class); View tab1 = _inflater.inflate(R.layout.custom_tab_1,null); homeTab.setTag("Tab1"); spec
任何人都可以告诉我这是可能的吗?请以更具描述性的方式说明您的问题,任何我理解的方式,请查看代码
intent = new Intent(this, HomeGroup.class);
View tab1 = _inflater.inflate(R.layout.custom_tab_1,null);
homeTab.setTag("Tab1");
spec = tabHost.newTabSpec("Tab1").setIndicator(tab1).setContent(intent);
tabHost.addTab(spec);
View tab2 = _inflater.inflate(R.layout.custom_tab_2,null);
homeTab.setTag("Tab2");
spec = tabHost.newTabSpec("Tab2").setIndicator(tab2).setContent(intent);
tabHost.addTab(spec);
View tab3 = _inflater.inflate(R.layout.custom_tab_3,null);
homeTab.setTag("Tab3");
spec = tabHost.newTabSpec("Tab3").setIndicator(tab3).setContent(intent);
tabHost.addTab(spec);
tabHost.setOnTabChangedListener(this);
//click on seleccted tab
int numberOfTabs = tabHost.getTabWidget().getChildCount();
for(int t=0; t<numberOfTabs; t++){
tabHost.getTabWidget().getChildAt(t).setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if(event.getAction()==MotionEvent.ACTION_UP){
String currentSelectedTag = MainTab.this.getTabHost().getCurrentTabTag();
String currentTag = (String)v.getTag();
Log.d(this.getClass().getSimpleName(), "currentSelectedTag: " + currentSelectedTag + " currentTag: " + currentTag);
if(currentSelectedTag.equalsIgnoreCase(currentTag)){
MainTab.this.getTabHost().setCurrentTabByTag(currentTag);
String newSelectedTabTag = MainTab.this.getTabHost().getCurrentTabTag();
if(newSelectedTabTag.toLowerCase().indexOf("tab1")!=-1){
//do smthg
}else if(newSelectedTabTag.toLowerCase().indexOf("tab1")!=-1){
//do smthg
}else if(newSelectedTabTag.toLowerCase().indexOf("tab3")!=-1){
//do smthg
}
return true;
}
}
return false;
}
});
}
intent=新的intent(这个,HomeGroup.class);
视图选项卡1=\u充气器。充气(R.layout.custom\u选项卡1,空);
homeTab.setTag(“Tab1”);
spec=tabHost.newTabSpec(“Tab1”).setIndicator(Tab1).setContent(intent);
tabHost.addTab(spec);
视图选项卡2=\u充气器。充气(R.layout.custom\u选项卡2,null);
homeTab.setTag(“Tab2”);
spec=tabHost.newTabSpec(“Tab2”).setIndicator(Tab2).setContent(intent);
tabHost.addTab(spec);
视图选项卡3=\u充气器。充气(R.layout.custom\u选项卡3,空);
homeTab.setTag(“Tab3”);
spec=tabHost.newTabSpec(“Tab3”).setIndicator(Tab3).setContent(intent);
tabHost.addTab(spec);
tabHost.setOnTabChangedListener(此);
//单击所选选项卡
int numberOfTabs=tabHost.getTabWidget().getChildCount();
对于(int t=0;t您指的是哪种ID?视图ID?这没有什么意义,因为TabHost
不会直接与视图交互。相反,它使用TabSpec
。您可以通过其TabSpec
的索引或通过标记来选择标记。通常您自己不会使用后者,因此基于索引的ne仍然存在。谢谢您的回复,但它对我不起作用,因为在按参数启动活动时,我需要按ID切换不同的选项卡。但您的回答需要在活动启动后监视操作。