我正在创建一个应用程序,我必须使用webView并在assets文件夹中显示保存在应用程序中的HTML文件。这是我的mainActivity代码。
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>
当我试图运行此应用程序时,它会崩溃..
任何人都可以帮助我找出我正在做的错误。
答案 0 :(得分:3)
您无法致电setContentView(browser)
,因为browser
已经是另一个视图的孩子 - LinearLayout
。
如果您不需要其他视图,只需更改布局xml文件并将其删除,只留下WebView
。否则,请删除setContentView(browser)
行。
答案 1 :(得分: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);
}
}