2012-10-08 33 views
5

Vui lòng giúp tôi câu hỏi này. Tôi đang làm việc với webview. Và tôi phải đối mặt với hai vấn đề:WebView: Phương thức WebViewClient.onPageStarted không được gọi là

  1. Khi trang web tải trang mới. Phương thức onPageStarted không được gọi nhưng phương thức onPageFinished được gọi.
  2. Phương thức: mWebView.canGoBack() luôn trả về false.

Nếu bạn biết tại sao hoặc có đề xuất, hãy giúp tôi. Lưu ý: Tôi đang làm việc với: Jquery Mobile ở phía máy chủ (phía Web).

Đó là ứng dụng khách Webview của tôi và mã nguồn Webview init.

private class MyWebViewClient extends WebViewClient{ 

    private static final String TAG = "MyWebViewClient"; 


    @Override 
    public void onPageFinished(WebView view, String url) { 
     super.onPageFinished(view, url); 
     Log.v(TAG, "onPageFinished url: " + url); 

    } 

    @Override 
    public void onLoadResource(WebView view, String url){ 
     Log.v(TAG, "onLoadResource url: " + url); 
    } 

    @Override 
    public void onPageStarted(WebView view, String url, Bitmap favicon) { 
     super.onPageStarted(view, url, favicon); 
     Log.v(TAG, "onPageStarted url: " + url); 

    } 

    @Override 
    public void onReceivedError(WebView view, int errorCode, 
      String description, String failingUrl) { 
     super.onReceivedError(view, errorCode, description, failingUrl); 
     Log.v(TAG, "onReceivedError url: " + failingUrl); 

    } 


    @Override 
    public boolean shouldOverrideUrlLoading(WebView view, String url) { 
     Log.v(TAG, "shouldOverrideUrlLoading : " + url); 

     return false; 
    } 

} 

Đây là init webview của tôi:

  mWebView = new WebView(getActivity()); 
     mWebView.setWebViewClient(new MyWebViewClient()); 
     WebSettings webSettings = mWebView.getSettings(); 
     webSettings.setJavaScriptEnabled(true); 

     String link = getArguments().getString(PARAMETER_LINK); 
     boolean deleteWVData = getArguments().getBoolean(PARAMETER_DELETE_DATA); 
     if(deleteWVData) 
      mWebView.clearCache(true); 

Trả lời

1

Tôi tin onPageStarted chỉ được gọi khi một mới trang được tải. Ví dụ: bạn đang sử dụng index.html và điều hướng đến contact.html

Hầu hết các khung di động (như di động jquery, ionic, angualar) sẽ nằm trên trang index.html và chỉ sửa đổi nội dung. Do đó, onPageStarted không được gọi, nhưng onPageFinished là

0

index.html # xxxxxxx index.html # aaaaaa

được coi là giống nhau bởi webview, trong trường hợp này, onPageStarted wont'be gọi

+0

Thêm một số giải thích với câu trả lời về cách thức này trả lời giúp đỡ OP trong sửa chữa vấn đề hiện tại –

+0

cuộc gọi webview chỉ gọi trênPageStarted khi tải trang mới –

-1

Cập nhật chế độ xem web và kiểm tra.

tôi phải đối mặt với vấn đề này khi phiên bản hiện tại của webview là 60.0.3112.107 trong khi phiên bản trong điện thoại là 57.x.xxxx.xxx

Các vấn đề liên quan