2012-05-21 35 views
2

我有我用loadDataWithBaseURL方法加載網站的問題。我在webview中加載一個準備好的網站。如果我回到之前的活動並開始webview活動,它會使用loadDataWithBaseURL()方法加載相同的準備好的網站,但我得到的網頁內容爲兩倍。例如Hello World和第二個Hello World。 我的代碼是如下:webview每次顯示來自上次loadurl()方法的內容

package de.http.test; 

import android.app.Activity; 
import android.os.Bundle; 
import android.view.KeyEvent; 
import android.webkit.WebBackForwardList; 
import android.webkit.WebView; 
import android.webkit.WebViewClient; 

public class WebviewActivity extends Activity { 

    WebView webview; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.mywebview);   
     Bundle bundle= this.getIntent().getExtras(); 
     String param1 = bundle.getString("Weburl"); 

     getDetailWebsite(param1); 

     webview = (WebView) findViewById(R.id.webview); 
     webview.setWebViewClient(new HelloWebViewClient()); 
     webview.getSettings().setJavaScriptEnabled(true); 
     webview.getSettings().setBuiltInZoomControls(true); 

     loadWebview(); 

    } 

    public void loadWebview() 
    {  
     webview.clearView();   

     webview.loadDataWithBaseURL("http://branchenportal-schlitz.de", HttpHelperClass.htmlDetailWebsiteCode, "text/html", "UTF-8", HttpHelperClass.htmlDetailWebsiteCode); 
    } 

    @Override 
    public boolean onKeyDown(int keyCode, KeyEvent event) { 
     if ((keyCode == KeyEvent.KEYCODE_BACK) && webview.canGoBack()) { 
      webview.goBack(); 

      WebBackForwardList mWebBackForwardList = webview.copyBackForwardList(); 
      String historyUrl = mWebBackForwardList.getItemAtIndex(mWebBackForwardList.getCurrentIndex()).getUrl(); 

      if(historyUrl.contains("<html>")) 
      {    
       loadWebview(); 
      } 

      return true; 
     } 
     return super.onKeyDown(keyCode, event); 
    } 

    private void getDetailWebsite(String url) 
    { 
     try{    
      HttpHelperClass.executeHttpGetDetailWebsite(url,this); 

     }catch (Exception ex) 
     { 
      ex.printStackTrace();   
     } 
    } 

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

     @Override 
     public void onPageFinished(WebView view, String url) { 

      if(url.contains("branchenportal-schlitz.de")) 
      { 
       view.clearHistory(); 
      } 
      super.onPageFinished(view, url); 
     } 
    } 

    @Override 
    protected void onStop() { 

     webview.clearCache(true);  
     webview.clearView(); 
     webview.clearHistory(); 
     webview.destroy();  
     super.onStop();  
    } 


} 

是否有任何人誰知道什麼亞姆做錯了什麼? 在此先感謝。 致敬

回答

0

確定以及排除故障我會開始擺脫(註釋掉)下面的所有代碼public boolean onKeyDown(int keyCode,KeyEvent event)。然後你可以看到它是否在你的onCreate中。但是,這是最重要的。

@Override 
public void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.buttons); 
    wb = new WebView(this); 
    wb.getSettings().setJavaScriptEnabled(true); 
    wb.setWebViewClient(new HelloWebViewClient()); 

    final String urlToLoad = "http://www.yourWebsite.com"; 

    wb.getSettings().setCacheMode(WebSettings.LOAD_DEFAULT); 
    wb.loadUrl(urlToLoad); 
} 

從這裏開始,然後開始增加你的額外代碼回。