2011-10-06 167 views
4

我想要在我的應用程序中加載的每個頁面都通過url覆蓋方法(我在做一些html修改)。我怎麼能做到這一點?webview.goBack()方法不會調用shouldOverrideUrlLoading方法

public boolean shouldOverrideUrlLoading(WebView view, String url) { 
    // do some html modifcations (myhtml) 
    view.loadDataWithBaseURL(url, myhtml, "text/html", "utf-8", url); 
    return false; 
} 

public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if ((keyCode == KeyEvent.KEYCODE_BACK) && web1.canGoBack()) { 
     web1.goBack(); // go back 1 step 
     return true; 
    } 
    return super.onKeyDown(keyCode, event); 
} 
+0

我對這個問題的答案也很感興趣。 – newman

回答

1

在頁面完成方法,你將得到的網址,你可以重新加載網址

 @Override 
     public void onPageStarted(WebView view, String url, Bitmap favicon) { 
      super.onPageStarted(view, url, favicon); 

     } 
     @Override 
     public void onPageFinished(WebView view, String url) { 
      super.onPageFinished(view, url); 
      _dialog.dismiss(); 
     } 

     @Override 
     public void onReceivedError(WebView view, int errorCode,String description, String failingUrl) { 
      // TODO Auto-generated method stub 
      super.onReceivedError(view, errorCode, description, failingUrl); 
      try{ 
       _dialog.dismiss(); 
       Toast.makeText(Showwebviewlatestnews.this, "NO Internet Connection Available", Toast.LENGTH_SHORT); 
      }catch (Exception e) { 

      } 
     } 
0

嘗試返回shouldOverrideUrlLoading真正
這裏有一個解釋: -

如果主機應用程序想要離開當前的WebView並處理url本身,則返回false,否則返回false。Reference

所以這應該做的伎倆,

public boolean shouldOverrideUrlLoading(WebView view, String url) { 
    // do some html modifcations (myhtml) 
    view.loadDataWithBaseURL(url, myhtml, "text/html", "utf-8", url); 
    return true; 
} 

和處理backPressed()一樣 -

@Override 
public void onBackPressed() { 
    if (webview != null && webview.canGoBack()) { 
     webview.goBack(); 
    } else { 
     super.onBackPressed(); 
    } 
} 
0

//替換此

public boolean onKeyDown(int keyCode, KeyEvent event) { 
if ((keyCode == KeyEvent.KEYCODE_BACK) && web1.canGoBack()) { 
    web1.goBack(); // go back 1 step 
    return true; 
} 
return super.onKeyDown(keyCode, event);} 

隨着

public boolean onKeyDown(int keyCode, KeyEvent event) { 
if ((keyCode == KeyEvent.KEYCODE_BACK) && web1.canGoBack()) { 
    web1.goBack(); // go back 1 step 
    web1.goBack(); 
    return true; 
} 
return super.onKeyDown(keyCode, event);} 
相關問題