1

我试图在 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>

出于某种原因,我遇到了一个带有空指针异常的致命错误。任何人都知道为什么会发生这种情况?

4

2 回答 2

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");
    }

在查找其中定义的视图之前,您必须加载 x​​ml 文件。这就是setContentView(R.layout.yourlayout)呼叫的工作。

于 2013-07-23T14:15:39.970 回答
2

试试下面

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 

你也有 webview 高度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>
于 2013-07-23T14:17:21.153 回答