2012-04-17 16 views
2

我用下面的方法來檢查,如果被點擊的標籤:鎖定塊變化 - TabHost

tabHost.setOnTabChangedListener(new OnTabChangeListener() { 

      public void onTabChanged(String tabId) { 
       int i = tabHost.getCurrentTab(); 

       if (i == 2) { 
        Log.i("Tab Number", "=" + i); 
        testFields(); // Verifies that the data fields were filled. 
       } 
      } 
     }); 

當我檢查是否領域是正確的,我有一個測試,「如果不然」。

如果一切都完成了,OK!

如果不是,則不能跟隨到下一個選項卡。必須保持標籤「數據」完成填充。

如何阻止選項卡中的更改?直到一切正確?

編輯來顯示測試有助於

final TabHost tabHost = (TabHost) getParent().findViewById(
       android.R.id.tabhost); 
     // ONCLICK TABHOST 
     for (int i = 0; i < tabHost.getTabWidget().getTabCount(); i++) { 
      tabHost.getChildAt(i).setOnTouchListener(new OnTouchListener() { 

       public boolean onTouch(View v, MotionEvent event) { 
        int action = event.getAction(); 

        if (action == MotionEvent.ACTION_UP) { 
         String currentTabTag = (String) tabHost 
           .getCurrentTabTag(); 
         String clickedTabTag = (String) v.getTag(); 

         if ((etCargac.getText().toString().equals("")) 
           || (tsoloSelecionadac.equals("Selecione"))) { 
          return false; // allows tab change 
         } 
         return true; // doesnt allow tab change 
        } 
        return false; 
       } 
      }); 
     } 

這個事件,我試圖做的是在另一個類。它不在tabhost的類中。 所以我必須使用getParent(),正確嗎?

我需要做的測試是檢查字段「tab1 data」是否填充。

如果沒有完成不應該切換到「TAB3結果」

回答

4

每個選項卡上使用OnTouchListener,你可以很容易地防止改變的標籤。

for (int i=0; i<tabWidget.getTabCount(); i++) { 
     tabWidget.getChildAt(i).setOnTouchListener(new OnTouchListener() { 
      @Override 
      public boolean onTouch(View view, MotionEvent event) { 
       int action = event.getAction(); 

       if (action == MotionEvent.ACTION_UP) { 
        String currentTabTag = (String) tabHost.getCurrentTabTag(); 
        String clickedTabTag = (String) view.getTag(); 

        testFields(); 

        if (!fieldAreCorrect) { 
         return true; // does not allow tab change 
        } 
       } 
       return false; // allows tab change 
      }    
     }); 
    } 
+0

我編輯了代碼,看看你做了什麼。再看一下上面。 – Vogatsu 2012-04-17 13:52:16

+0

適合我... – user754730 2012-10-10 12:36:12

+0

工作...但目前以及下一個標籤仍然選擇... :( – mohitum 2016-05-05 12:54:35