2013-10-17 91 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

相關問題