我正在尝试在webview上放置一个按钮,我发现最简单的方法是通过xml。 我的MainActivity onCreate看起来像这样:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Button buttonClick = (Button)findViewById(R.id.playButton);
mWebview = (WebView)findViewById(R.id.webview);
mWebview.getSettings().setJavaScriptEnabled(true); // enables javascript
System.out.println("Loading Webpage...");
new tts().execute("");
mWebview.loadUrl("http://www.aljazeera.com/news/americas/2013/07/20137113200544375.html");
mWebview.addView(buttonClick);
setContentView(mWebview);
}
我的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:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
<WebView
android:id="@+id/webview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
/>
<Button
android:id="@+id/playButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:text="Pause" />
</RelativeLayout>
出于某种原因,我遇到了一个带有空指针异常的致命错误。任何人都知道为什么会发生这种情况?
答案 0 :(得分:2)
将其更改为:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.yourlayout);
Button buttonClick = (Button)findViewById(R.id.playButton);
mWebview = (WebView)findViewById(R.id.webview);
mWebview.getSettings().setJavaScriptEnabled(true); // enables javascript
System.out.println("Loading Webpage...");
new tts().execute("");
mWebview.loadUrl("http://www.aljazeera.com/news/americas/2013/07/20137113200544375.html");
}
您必须先加载xml文件,然后才能查找其中定义的View。这是setContentView(R.layout.yourlayout)
电话的工作。
答案 1 :(得分:1)
尝试以下
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.mylayout); // this should come before initialization
...//rest of the code
}
您可以findViewById
将当前视图层次结构设置为活动。您需要先将内容设置为活动。如果不是,则初始化失败,导致NullPointerException
。
此外,您的xml按钮已在onCreate
中初始化。无需将其添加到webview
。
mWebview.addView(buttonClick); // not required
您还有网络浏览量高fill_parent
<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:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
<WebView
android:id="@+id/webview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_above="@+id/playButton"
/>
<Button
android:id="@+id/playButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:text="Pause" />
</RelativeLayout>