2012-08-10 75 views
0

嘿,我有一個小問題,我想創建一個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第一個佈局

但我只是不明白爲什麼我得到這個錯誤。

+0

這也許可以給你一些答案:http://stackoverflow.com/questions/10743051/w-webcore2733-cant-get-the-viewwidth-第一次佈局後 – 2012-08-10 17:10:24

+0

你在哪裏創建視圖? – Ostkontentitan 2012-08-10 17:14:02

+0

onCreate() - 這是您應該完成所有常規靜態設置的地方:創建視圖,將數據綁定到列表等。 – Maxim 2012-08-10 18:26:58

回答

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

希望這有助於

碧玉

0

我認爲你是要麼不設置內容視圖,要麼不添加您的WebV輸入代碼iew到主佈局。 如果網頁視圖沒有周圍的佈局,然後在的onCreate代碼的結束()地址:

setContentView(WVakten); 

在這種情況下的LayoutParams是沒有必要的

如果您已經設置您的內容視圖佈局,那麼你就需要獲得該佈局的參考,並添加您的看法:

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

在這種情況下的LayoutParams將是必要的,而且必須是父佈局的類型。所以,如果你WebView的四周圍着LinearLayout中必須使用

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