1

请让我知道我到底哪里错了。该代码没有给出任何编译时错误,但是在运行时它给出了强制关闭错误。

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    WebView wv = (WebView) findViewById(R.id.webView1);
    wv.loadUrl("file:///android_asset/page1.html");

}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.activity_menu, menu);
    return super.onCreateOptionsMenu(menu);
}

public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
    case R.id.item1:

        wv.loadUrl("file:///android_asset/page1.html");
        return true;
    case R.id.item2:

        wv.loadUrl("file:///android_asset/page2.html");
        return true;
    case R.id.item3:

        wv.loadUrl("file:///android_asset/page3.html");
        return true;
    case R.id.item4:
        wv.loadUrl("file:///android_asset/page4.html");
        return true;

    }
    return super.onOptionsItemSelected(item);
}

异常的堆栈跟踪是:FATAL EXCEPTION: main java.lang.NullPointerException at com.example.sample.onOptionsItemSelected(suraj_resume.java:38) at android.app.Activity.onMenuItemSelected(Activity.java:2205) at com.android。 internal.policy.impl.PhoneWindow.onMenuItemSelected(PhoneWindow.java‌​:748) 在 com.android.internal.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:143) 在 com.android.internal.view.menu.MenuBuilder .performItemAction(MenuBuilder.java:85‌​5) 在 com.android.internal.view.menu.IconMenuView.invokeItem(IconMenuView.java:532)

4

3 回答 3

1

我通过在每种情况下创建相同 Web 视图的新对象来解决我的问题。运行代码如下所示。


public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.item1: WebView wv1 = (WebView) findViewById(R.id.webView1); wv1.loadUrl("file:///android_asset/resume_page1.html"); return true; case R.id.item2: WebView wv2 = (WebView) findViewById(R.id.webView1); wv2.loadUrl("file:///android_asset/resume_page2.html"); return true; case R.id.item3: WebView wv3 = (WebView) findViewById(R.id.webView1); wv3.loadUrl("file:///android_asset/resume_page3.html"); return true; case R.id.item4: WebView wv4 = (WebView) findViewById(R.id.webView1); wv4.loadUrl("file:///android_asset/resume_page4.html"); return true;

于 2012-10-13T11:20:09.340 回答
0

尝试这样的事情:

 wv.loadUrl(“javascript:changeLocation(‘” + url + “‘)”); 

此外,您应该在 assets 文件夹中创建一个名为“www”的文件夹来保存您的文件。

此外,您的最后一条case语句应如下所示:

case R.id.item4:
    wv.loadUrl("file:///android_asset/page4.html");
    return true;



    default:
          return super.onOptionsItemSelected(item);}
    }
于 2012-10-12T08:21:13.923 回答
0

java.lang.NullPointerException

您没有保留对 WebView 的引用。在 onCreate 之外声明 WebView wv,以便选择的菜单项可以使用引用。

于 2012-10-12T09:06:26.460 回答