android studio 1.1 中的 WebView 的 findViewById returns null
findViewById returns null for WebView in android studio 1.1
我构建了一个 android 应用程序,其中包含一个网络视图。我使用 Android studio 1.1。最小的SDK是19,只有一种布局,下面代码activity_main.xml
<RelativeLayout 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:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">
<WebView android:text="@+id/web_view" android:layout_width="match_parent"
android:layout_height="match_parent" />
</RelativeLayout>
java class MainActivity.java 如下:
public class MainActivity extends ActionBarActivity {
private WebView web_view;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
web_view = (WebView) findViewById(R.id.web_view);
WebSettings webSetting= web_view.getSettings();
webSetting.setJavaScriptEnabled(true);
web_view.setWebChromeClient(new WebChromeClient());
web_view.loadUrl("file:///andorid_asset/www/index.html");
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}
错误是来自 onCreate 函数的 java.lang.NullPointerException
语句 WebSettings webSetting = web_view.getSettings(),
我已经检查过变量 web_view 是否为空,这意味着语句 findViewById (R.id.web_view) 没有 return 任何内容。如您所见,webview存在于布局xml文件中,代码中调用了正确的布局文件(实际上只有这个布局xml)。我真的不知道会发生什么。我确实阅读了 link findViewById returns null for WebView。我也 clean/rebuild 投影了几次,重启了我的设备 (Samsung Galaxy TAB S, android 4.4.2) 几次。没用。
有人可以指出什么是错的吗?
提前致谢!
您定义的 id 属性 WebView
错误。
你有:
WebView android:text="@+id/web_view"
应该是:
WebView android:id="@+id/web_view"
尝试更改标签名称:
<RelativeLayout 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:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">
<!-- BAD PROPERY NAME HERE -->
<WebView android:id="@+id/web_view" android:layout_width="match_parent"
android:layout_height="match_parent" />
</RelativeLayout>
来自 android:text="@+id/web_view"
对于 android:id="@+id/web_view"
我构建了一个 android 应用程序,其中包含一个网络视图。我使用 Android studio 1.1。最小的SDK是19,只有一种布局,下面代码activity_main.xml
<RelativeLayout 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:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">
<WebView android:text="@+id/web_view" android:layout_width="match_parent"
android:layout_height="match_parent" />
</RelativeLayout>
java class MainActivity.java 如下:
public class MainActivity extends ActionBarActivity {
private WebView web_view;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
web_view = (WebView) findViewById(R.id.web_view);
WebSettings webSetting= web_view.getSettings();
webSetting.setJavaScriptEnabled(true);
web_view.setWebChromeClient(new WebChromeClient());
web_view.loadUrl("file:///andorid_asset/www/index.html");
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}
错误是来自 onCreate 函数的 java.lang.NullPointerException
语句 WebSettings webSetting = web_view.getSettings(),
我已经检查过变量 web_view 是否为空,这意味着语句 findViewById (R.id.web_view) 没有 return 任何内容。如您所见,webview存在于布局xml文件中,代码中调用了正确的布局文件(实际上只有这个布局xml)。我真的不知道会发生什么。我确实阅读了 link findViewById returns null for WebView。我也 clean/rebuild 投影了几次,重启了我的设备 (Samsung Galaxy TAB S, android 4.4.2) 几次。没用。
有人可以指出什么是错的吗?
提前致谢!
您定义的 id 属性 WebView
错误。
你有:
WebView android:text="@+id/web_view"
应该是:
WebView android:id="@+id/web_view"
尝试更改标签名称:
<RelativeLayout 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:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">
<!-- BAD PROPERY NAME HERE -->
<WebView android:id="@+id/web_view" android:layout_width="match_parent"
android:layout_height="match_parent" />
</RelativeLayout>
来自 android:text="@+id/web_view"
对于 android:id="@+id/web_view"