탭안에서 웹뷰를 보여주려 합니다..
2가지 문제가 생기네요..
먼저 첫번째는 탭이 보이고 그 안에서 웹뷰가 보여야 한다는 것이고..
두번째는 그 웹뷰에서 만약 페이지를 이동하였을때 뒤로가기 버튼을 누르면 웹뷰의 이전 페이지가 나와야 한다는 점입니다.
각각의 해결방법은 아는데.. 이 둘이 같이 지원되도록 하는 방법을 모르겠네요 ;
먼저 첫번째 웹뷰가 탭 안에 보여야하는것은 WebViewClient 클래스를 상속받은 MyWebClient 클래스를 만들고
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl("url);
return true;
}
이렇게 shouldOverrideUrlLoading() 메서드를 오버라이딩 해주면 되더군요.
그리고 웹뷰 객체의 웹뷰클라이언트를 이렇게 설정해주구요..
mWeb.setWebViewClient(new MyWebViewClient());
두번째 해결 방법은
WebViewClient가 아니라 WebChromeClient를 사용하면 되더군요..
mWeb.setWebChromeClient(new WebChromeClient() {
@Override
public boolean onJsAlert(WebView view, String url, String message, final android.webkit.JsResult result){
new AlertDialog.Builder(myApp)
.setTitle("AlertDialog")
.setMessage(message)
.setPositiveButton(android.R.string.ok,
new AlertDialog.OnClickListener()
{
public void onClick(DialogInterface dialog, int which)
{
result.confirm();
}
})
.setCancelable(false)
.create()
.show();
return true;
};
});
이런 식으로요..
문제는.............
이 둘을 동시에 적용시킬줄을 모르겠습니다 ;;
WebChromeClient에는 shouldOverrideUrlLoading()가 없어서 오버라이딩 시킬수가 없습니다 ;
그렇다고 WebViewClient대신 WebChromeClient를 사용하면 탭안에 들어오질 않고 전체 화면으로 표시되구요..
이거 어떻게 해결해야 할까요 ;;




첫번째 방법대로 보여주시구용.
백버튼을 오버라이딩 하세요.
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(keyCode==4) { // 백버튼이면
if(webView.canGoBack()) { // 뒤로 갈 페이지가 있는 경우
webView.goBack(); // 뒤로 보냄. webView는 웹뷰객체입니당..
} else { // 뒤로 갈 페이지가 없는 경우 처리...
}
return true;
}