0

ちょっとした問題が発生しました。コードで WebView を作成したいのです。これは私が使いたい私のコードです。

WebView WVakten = new WebView(MainActivity.this);
                WVakten.setLayoutParams(new LayoutParams(LinearLayout.LayoutParams.FILL_PARENT, LinearLayout.LayoutParams.FILL_PARENT));
                WVakten.setVisibility(View.VISIBLE);
                WVakten.getSettings().setJavaScriptEnabled(true);
                WVakten.getSettings().setBuiltInZoomControls(true);
                WVakten.getSettings().setDefaultZoom(WebSettings.ZoomDensity.CLOSE);
                WVakten.loadUrl("http://www.google.de");
                WVakten.setWebViewClient(new WebViewClient(){
                    public boolean shouldOverrideUrlLoading(WebView view, String url) {
                        if (url != null && url.startsWith("http://")) {
                            view.getContext().startActivity(
                                new Intent(Intent.ACTION_VIEW, Uri.parse(url)));
                            return true;
                        } else {
                            return false;
                        }}});

しかし、アプリを起動しようとすると、次のエラーのみが表示されます。

08-10 19:03:10.560: W/webcore(7134): 最初のレイアウト後に viewWidth を取得できません

しかし、なぜこのエラーが発生するのかわかりません。

4

2 に答える 2

0

これを解決する最も簡単な方法は、xml ファイルでレイアウトを作成し、onCreate でレイアウトに WebView を追加することです。

例:

<LinearLayout 
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:weightSum ="1.0"
android:layout_width="match_parent" android:layout_height="match_parent">    

<fragment
    android:id="@+id/article"
    android:layout_width="match_parent"
    android:layout_height="0px"
    android:layout_weight="0.90"
    class="nieuws.com.ArticleFragment" />
</LinearLayout>

ArticleFragment の作成時に、次のコードを追加するだけです。

public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {

    m_webview = new WebView(getActivity());
    m_webview.getSettings().setJavaScriptEnabled(true);

    m_webview.setWebViewClient(new jWebViewClient());
    return m_webview;
 }

お役に立てれば

碧玉

于 2012-08-10T20:19:56.363 に答える
0

WebVコンテンツ ビューを設定していないか、ここで入力コードiewをメイン レイアウトに追加していないと思います。Webview に周囲のレイアウトがない場合は、コードの最後に onCreate() を追加します。

setContentView(WVakten);

その場合、LayoutParams は必要ありません。

コンテンツ ビューを既にレイアウトに設定している場合は、そのレイアウトへの参照を取得し、ビューを追加する必要があります。

LinearLayout yourLayout = findViewById(R.id.something);
yourLayout.addView(WVakten);

その場合、LayoutParams が必要になり、親レイアウトのタイプである必要があります。したがってWebView、 LinearLayout で囲まれている場合は、使用する必要があります

LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(...);
于 2012-08-10T21:11:28.727 に答える