탭안에서 웹뷰를 보여주려 합니다..

 

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를 사용하면 탭안에 들어오질 않고 전체 화면으로 표시되구요..

 

이거 어떻게 해결해야 할까요 ;;