現在押しているタブをもう一度押すとWebViewにgoBack()が働くというものを簡単に作ってみます。
まずタブとTouchListenerをonCreate内で作ります。
TabHost tabHost = getTabHost();
TabSpec firstTab = tabHost.newTabSpec("First")
.setIndicator(chatTab1)
.setContent(R.id.first_content);
tabHost.addTab(firstTab);
View v1 = getTabWidget().getChildAt(0);
v1.setOnTouchListener(this);
getChildAt()を活用して作成したタブのViewを作り、setOnTouchListener(this)でタブを押した時に起こす動作を指定します。
しかしこのままだと他のタブから移ってきた最初のタッチでも呼ばれてしまうので、onTouch内で詳細を指定してあげる必要があります。
ここでは、すでにgoback()したいwebviewが開かれているか、そしてそのwebviewがgoBack()可能かどうかで振り分けをしています。
WebView webview;
@Override
public boolean onTouch(View v, MotionEvent event) {
if (webview.isShown() && webview.canGoBack()) {
view.goBack();
}
return false;
}
タブが何個もある場合はgetChildAt(1)のViewを同様に作成し、if節の終わりに
else if(webview2.isShown&&webview2.canGoBack())
と付け足してあげると同じアクションを簡単に他のタブにも活用できます。