2

PopupWindow内にWebViewを含めようとしています。WebViewは、ウィキペディアのページを表示するためのものです。

興味深いことに、WebViewは、シミュレーターを使用するときに意図したとおりに機能します。テストデバイス(元のASUS Transformer)でアプリを使用すると、ポップアップ内に表示されるWebページの代わりに、ポップアップが表示され、ローダーに読み込みの進行状況が表示されますが、デフォルトのWebブラウザーが表示されてWebページが表示されます。この場合も、ページがポップアップウィンドウ内に表示されるシミュレータで意図したとおりに機能します。私はここSOに関する多くの投稿を含む多くのサイトを見てきましたが、私が試したことは何もありません。他の誰かが彼らのアプリ開発の1つでこれを見たことを願っています。

ボタン、PopupWindow、およびWebViewのセットアップ用に実装したコードは次のとおりです。

WikiButton   = (ImageButton)findViewById(R.id.WikiButton);
htmlProgress = (ProgressBar)elemWebView.findViewById(R.id.htmlProgressBar);

htmlShowing  = -1;

// Necessary for the Info Popup window
infoWebViewPopup = new PopupWindow(infoWebView = inflater.inflate(R.layout.property_info_layout, null, false), 1105, 685, true);
infoWebViewPopup.setInputMethodMode(PopupWindow.INPUT_METHOD_NEEDED);
infoWebViewPopup.setFocusable(false);

infoWebHTMLView = (WebView)infoWebView.findViewById(R.id.infoWebHTMLView);
WebSettings mySettingsInfo = elemWebHTMLView.getSettings();
mySettingsInfo.setJavaScriptEnabled(true);

ボタンアクションコードは次のとおりです。

WikiButton.setOnClickListener(new View.OnClickListener(){
    infoWebHTMLView.clearView();

    String urlToGet = "http://en.wikipedia.org/wiki/" + "SOME OTHER STRING HERE";

    // Load the URL into the web view
    infoWebHTMLView.loadUrl(urlToGet);

    // Calculate posX and posY for placement
    infoWebViewPopup.setOutsideTouchable(false);
    infoWebViewPopup.showAtLocation(findViewById(R.id.properties_view), Gravity.LEFT | Gravity.TOP, posX, posY);
}

WebView用に実装したその他のコード:

infoWebHTMLView.setWebChromeClient(new WebChromeClient() {
    public boolean shouldOverrideUrlLoading(WebView view, String url){
        view.loadUrl(url);

        return true;
    }

    public void onProgressChanged(WebView view, int progress) {
        elemWebHTMLView.invalidate();

        htmlProgress.setProgress(progress);

        if(progress >= 100){
            htmlProgress.setVisibility(View.INVISIBLE);
        }else{
            htmlProgress.setVisibility(View.VISIBLE);
        }
    }
});

PopupWindow、WebView、およびButtonはすべてXMLファイルで定義されています。

どんな助けでもありがたいです、そしてどうもありがとう。

4

1 に答える 1

1

WebChromeClientではなくWebViewClientを使用する必要があります。

infoWebHTMLView.setWebViewClient(new WebViewClient() {
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        view.loadUrl(url);
        return true;
    }
});

メソッドをオーバーライドするときは、必ず@Overrideアノテーションを追加してください。メソッドをオーバーライドしていると思っていても、実際には存在しない場合は、エラーが発生します。

于 2012-09-09T23:33:28.143 に答える