Java 如何按ID设置活动选项卡?

Java 如何按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

当前方法是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 = 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切换不同的选项卡。但您的回答需要在活动启动后监视操作。