2012-04-17 44 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