锁定选项卡更改 - 选项卡主机



我使用以下方法来检查是否单击了选项卡:

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.
                }
            }
        });

当我检查字段是否正确时,我有一个测试"ifor else"。

如果一切都完成了,好吧!

如果没有,则无法按照下一个选项卡进行操作。必须保留选项卡"数据"才能完成填写。

如何阻止选项卡中的更改?直到一切正确?

编辑以显示测试帮助

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;
                }
            });
        }

我正在尝试做的这个活动是在另一个班级。它不在选项卡主机类中。所以我必须使用 getParent(),对吗?

我需要做的测试是检查字段"tab1 data"是否已填充。

如果没有任何内容不完整,则不应切换到"tab3结果"

在每个选项卡上使用 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
            }               
        });
    }

相关内容

最新更新