2013-10-17 48 views
0

当前的方法是通过索引tabHost.setCurrentTab(index),但我想为此操作使用Tab作为ID。如何通过ID设置活动选项卡?

任何机构都可以告诉我这是可能的吗?

+0

?视图ID?这实际上并不合理,因为“TabHost”不直接与视图交互。相反,它使用'TabSpec'。您可以通过TabSpec的索引或标签来选择标签。通常你不会自己使用后者,所以基于索引的依然存在。 –

回答

0

请注明你的问题问得更具描述性的方式任何方式我在此基础上了解请看看在你指的是什么样的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; 
      } 
     }); 
    } 
+0

谢谢你的回复,但这对我不起作用,因为当通过参数开始活动时,我需要通过ID切换不同的选项卡。但是你的回答需要在活动启动后监控行动。 – Eagle

相关问题