2

loadDataWithBaseURL メソッドを使用して Web サイトをロードするという問題があります。そこで、準備されたインターネットサイトを webview にロードします。以前のアクティビティに戻って webview アクティビティを開始すると、loadDataWithBaseURL() メソッドを使用して同じ準備済みの Web サイトが読み込まれますが、コンテンツが 2 倍の webview が表示されます。たとえば、Hello World と 2 番目の Hello World です。私のコードは次のとおりです。

 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();     
    }


}

私が間違っていることを知っている人はいますか?前もって感謝します。よろしく

4

1 に答える 1

0

これをトラブルシューティングするのはOKです 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);
 }

ここから始めて、余分なコードを追加し直してください。

于 2012-05-21T14:23:50.630 に答える