5

我正在尝试构建一个仅由 webview 组成的 android 应用程序。我从android 开发站点获取了示例并对其进行了修改。但是看起来很简单,每次调用 findViewById 都会产生一个空指针。.java 文件:

    public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        WebView webView = (WebView) findViewById(R.id.webview);
        // returns null pointer 
        webView.loadUrl("file:///android_asset/index.html");

        setContentView(webView);
    }
}

布局文件:

<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:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:orientation="horizontal"
    tools:context=".MainActivity" >

    <WebView
        android:id="@+id/webview"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" />

</LinearLayout>

我将以下行放入清单中:

<uses-permission android:name="android.permission.INTERNET" />

我很困惑...

4

2 回答 2

13

改成

public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.mylayout); // muylayout is your layout.xml
    WebView webView = (WebView) findViewById(R.id.webview);
    // returns null pointer 
    webView.loadUrl("file:///android_asset/index.html");
}
}

您需要在调用之前将布局的内容设置为活动findViewByIdfindViewById查找当前布局中提供的 id 膨胀的视图。

于 2013-09-22T10:47:26.807 回答
1

以防万一接受的答案不起作用。因为我有两种不同的手机和平板电脑布局,但只有一个有 WebView,这会导致 findViewById() 为空。

于 2015-04-08T09:08:05.670 回答