我正在尝试构建一个Android应用程序,它只包含一个webview。我从android dev site中取了示例并对其进行了修改。但是看起来很简单,每次调用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" />
我很困惑......
答案 0 :(得分:11)
更改为
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");
}
}
在调用findViewById
之前,您需要将布局的内容设置为活动。 findViewById
查找当前布局中提供的ID已膨胀的视图。
答案 1 :(得分:1)
以防万一接受的答案无效。由于我有两种不同的手机和平板电脑布局,但只有一种具有导致findViewById()得到null的WebView。