次の方法を使用して、タブがクリックされたかどうかを確認しました。
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.
}
}
});
フィールドが正しいかどうかを確認するとき、「if or else」というテストがあります。
すべてが完了したら、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;
}
});
}
私がやろうとしているこのイベントは別のクラスにあります。タブホストのクラスにはありません。getParent() を使用する必要がありますね。
私が行う必要があるテストは、フィールド「tab1 data」が入力されているかどうかを確認することです。
何も完了していない場合は、「tab3 results」に切り替えるべきではありません