无法创建WebView

时间:2012-08-10 17:07:30

标签: android layout webview

嘿伙计们我有点问题我想通过代码创建一个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

但我只是不明白为什么我会收到这个错误。

2 个答案:

答案 0 :(得分:0)

解决此问题的最简单方法是在xml文件中创建布局,并将webview添加到onCreate中的布局中。

示例:

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

希望这有帮助

碧玉

答案 1 :(得分:0)

我认为您要么未设置内容视图,要么未在此处WebView输入代码添加到主布局中。 如果Webview没有周边布局,那么在onCreate()的代码末尾添加:

setContentView(WVakten);

在这种情况下,LayoutParams不是必需的

如果您已将内容视图设置为布局,则需要获取对该布局的引用并添加视图:

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

在这种情况下,LayoutParams将是必需的,并且必须是父Layout的类型。因此,如果您的WebView被LinearLayout包围,则必须使用

LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(...);