2014-06-13 137 views
1

我正在創建一個應用程序,在該應用程序中必須使用webView並在資產文件夾中顯示保存在應用程序中的HTML文件。這是我的主要活動代碼。嘗試運行WebView應用程序時發生錯誤

public class MainActivity extends Activity { 


WebView browser; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    browser = (WebView)findViewById(R.id.wv1); 
    browser.loadUrl("file:///android_asset/test.htm"); 
    WebSettings webSettings = browser.getSettings(); 
    browser.getSettings().setJavaScriptEnabled(true); 
     setContentView(browser); 

} 

}

,這是我的xml文件

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

<TextView 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="Test Application" 
    android:gravity="center_horizontal"> 

</TextView> 
<WebView 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:id="@+id/wv1" 
    android:layout_marginTop="3dp"> 

</WebView> 

whin我試圖運行該應用程序,它會崩潰.. this is the LogCat of errors when i run the application

可以在任何請幫助我找出我在做什麼錯誤。

回答

3

您不能撥打setContentView(browser),因爲browser已經是另一個視圖的孩子了 - LinearLayout

如果您不需要其他視圖,只需更改佈局xml文件並將其刪除,只留下WebView。否則,請刪除setContentView(browser)行。

+0

謝謝Matiash,現在它工作正常。 – Devraj

0

您正在使用setContentView()兩次並提供已有父級視圖。這就是爲什麼它給你的錯誤說call removeView() on the child's parent first。所以刪除setContentView(browser)

你的代碼應該看起來像這樣。

public class MainActivity extends Activity { 


WebView browser; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     browser = (WebView)findViewById(R.id.wv1); 
     browser.loadUrl("file:///android_asset/test.htm"); 
     browser.getSettings().setJavaScriptEnabled(true); 

    } 

} 
+1

非常感謝Aniruddha幫助我理解錯誤LogCat的實際含義。並且我沒有輸入錯誤,我只是將文件保存爲test.htm,因爲您可以使用.html或.htm兩種方式保存它。 – Devraj

+0

馬蒂亞什回答了同樣的49分鐘。你應該已經投了他的答案,而不是張貼相同的答案。這就是投票答覆的全部目的,以及這是如何運作的。 – Javanator

+2

@Devraj爲了清楚起見,雙'setContentView()'不是異常的真正原因。您可以隨意多次調用它 - 但是_you無法提供已有parent_的視圖。如果你先將WebView從父節點中刪除(儘管這將是解決這個問題的一個非常迂迴的方法),這會起作用。 – matiash

相關問題