微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

android – 覆盖WebSettings cordovaExample.java会导致PhoneGap出错

对于经验丰富的Android程序员来说,这应该很容易.不幸的是我对android sdk一无所知.我使用PhoneGap打包Web应用程序,我需要覆盖cordovaExample.java中的WebSettings(现在我使用cordovaExample作为我的应用程序的模板).我的代码看起来像这样:

package org.apache.cordova.example;

import android.app.Activity;
import android.os.Bundle;
import org.apache.cordova.*;

public class cordovaExample extends DroidGap
{
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        this.appView.getSettings().setUseWideViewPort(true);
        this.appView.getSettings().setLoadWithOverviewmode(true);
        super.onCreate(savedInstanceState);
        super.loadUrl("file:///android_asset/www/index.html");
    }
}

我可以毫无问题地运行ant debug install但是当我在模拟器中启动应用程序时,会发生以下错误

E/AndroidRuntime(  549): java.lang.RuntimeException: Unable to start activity ComponentInfo{org.apache.cordova.example/org.apache.cordova.example.cordovaExample}: java.lang.NullPointerException
E/AndroidRuntime(  549):    at android.app.ActivityThread.performlaunchActivity(ActivityThread.java:1956)
E/AndroidRuntime(  549):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)
E/AndroidRuntime(  549):    at android.app.ActivityThread.access$600(ActivityThread.java:123)
E/AndroidRuntime(  549):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147)
E/AndroidRuntime(  549):    at android.os.Handler.dispatchMessage(Handler.java:99)
E/AndroidRuntime(  549):    at android.os.Looper.loop(Looper.java:137)
E/AndroidRuntime(  549):    at android.app.ActivityThread.main(ActivityThread.java:4424)
E/AndroidRuntime(  549):    at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime(  549):    at java.lang.reflect.Method.invoke(Method.java:511)
E/AndroidRuntime(  549):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
E/AndroidRuntime(  549):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
E/AndroidRuntime(  549):    at dalvik.system.NativeStart.main(Native Method)
E/AndroidRuntime(  549): Caused by: java.lang.NullPointerException
E/AndroidRuntime(  549):    at org.apache.cordova.example.cordovaExample.onCreate(cordovaExample.java:12)
E/AndroidRuntime(  549):    at android.app.Activity.performCreate(Activity.java:4465)
E/AndroidRuntime(  549):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
E/AndroidRuntime(  549):    at android.app.ActivityThread.performlaunchActivity(ActivityThread.java:1920)
E/AndroidRuntime(  549):    ... 11 more
W/ActivityManager(   78):   Force finishing activity org.apache.cordova.example/.cordovaExample

无论我是否为Android sdk 2.1或4.3(在Mac OS X Lion上)打包,都会出现错误.

任何帮助将非常感谢.

解决方法:

错误说第12行有一个NullPointerException:

this.appView.getSettings().setUseWideViewPort(true);

要么this.appView为appView.getSettings()返回null.添加空值检查并查看它是哪一个.一旦你知道它是哪一个,就会更容易找出为什么存在空值.

此外,与问题无关,不确定它是否是一个错字,但你的类名是骆驼套.这样做符合最佳做法.由于驼峰案例命名法仅与实例变量,成员和方法一起使用,因此将来会使您感到困惑.类名始终为大写字母大写,包名称始终为小写.
所以它应该是

CordovaExample

并不是

cordovaExample

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐