2011-02-16 3 views
2

WebView가 포함 된 앱을 쓰고 있습니다. 내 앱에서 보여 주려고하는 콘텐츠가 오프라인이거나 다른 이유로 연결할 수없는 경우에 대비하여 "페이지를 찾을 수 없음"이라는 메시지를 처리하는 몇 가지 기능을 추가하려고합니다. onReceivedError()를 사용해 보았지만 아무 소용이 없습니다. 아마도 내 구문이 틀린 경우가 아니라면 오류가 표시되지 않습니다. 누군가 도울 수 있습니까?webview에서 "페이지를 찾을 수 없음"오류를 가로채는 방법은 무엇입니까?

코드 : 당신이 URL을로드하기 전에

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    mWebView = (WebView) findViewById(R.id.webview); 
    mWebView.getSettings().setJavaScriptEnabled(true); 
    mWebView.loadUrl("http://www.somesite.net"); 

    mWebView.setWebViewClient(new HelloWebViewClient()); 

    mWebView.setWebViewClient(new WebViewClient() { 
    @Override 
    public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) { 
     Log.i("WEB_VIEW_TEST", "error code:" + errorCode); 
     super.onReceivedError(view, errorCode, description, failingUrl); 
     //TO DO - do something else in here if the site is down 
     } 
     }); 


} 
private class HelloWebViewClient extends WebViewClient { 
    @Override 
    public boolean shouldOverrideUrlLoading(WebView view, String url) { 
     view.loadUrl(url); 
     return true; 

    } 
} 
+0

"onReceivedError()를 사용했지만 사용하지 않으려했습니다."라고 정의하십시오. – CommonsWare

+0

@CommonsWare 내 주석이있는 "// TO DO"행을 볼 수있는 코드 샘플에서 토스트 메시지를 사용하려고 시도했으며 mWebView.loadUrl()을 사용하여 대체 URL로 보냈습니다. 코드가 오류없이 실행되지만 토스트 메시지 나 리디렉션 된 URL 대신 "페이지를 찾을 수 없음"이 표시됩니다. –

+3

두 개의 'WebViewClient' 객체를 설정하는 것이 문제 일 수 있습니다. 그렇지 않으면, AFAIK,'onReceivedError()'가 작동해야합니다. – CommonsWare

답변

1

WebViewClient를 설정해야합니다.

+0

사실, WebViewClient는 클릭 연결이 기본 브라우저를 여는 것을 막기위한 수단으로 잘 작동합니다. –

0

방금이 문제가 발생했습니다. onReceivedError()가 정상적으로 작동합니다. 오류가 발생하면 -2가 표시됩니다.

관련 문제