Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/184.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android get helper类方法问题_Java_Android_Nullpointerexception - Fatal编程技术网

Java Android get helper类方法问题

Java Android get helper类方法问题,java,android,nullpointerexception,Java,Android,Nullpointerexception,我有一个小问题,我的助手类的android。我有3个类a,B,C。 B扩展了A和C,我试图从B中使用C中的方法,但每次我尝试使用它们都会给我带来一个NullPointerException 下面是我正在使用的代码的示例: 在A班,我有这样一个: public class A { //declaration from class C C newC; } 在C班,我有: public class C { static Context context; String version = "";

我有一个小问题,我的助手类的android。我有3个类a,B,C。 B扩展了A和C,我试图从B中使用C中的方法,但每次我尝试使用它们都会给我带来一个NullPointerException

下面是我正在使用的代码的示例:

在A班,我有这样一个:

public class A {

//declaration from class C
C newC;

}
在C班,我有:

public class C {

static Context context;
String version = "";
public static int strVerToIntVer(String strLen){
        String newStr = strLen.replace(".", "");
        int i=Integer.parseInt(newStr);
        return i;
    }

    public static  String getPackageVersion(){  
        try {

            PackageManager pm = context.getPackageManager();
            PackageInfo packageInfo = pm.getPackageInfo(context.getPackageName(), 0);
            version = packageInfo.versionName;
        } catch (NameNotFoundException e) {
            e.printStackTrace();
        }
        return version;
    }

    public static boolean checkClientApiVer(String clientApiVer){

        int s = C.strVerToIntVer(clientApiVer);
        int c = C.strVerToIntVer(getPackageVersion());

            return (c>=s);
        }
}
在B班,我有:

public class B extends A {

C newC;

serverApiVer = jsonObj.getString("server_api_ver");
Log.w("SERVER API VER","SHOW SERVER API VERSION : "+serverApiVer);

C.checkClientApiVer(serverApiVer);



}
这行代码是:C.checkClientApiVerserverApiVer;throwin是一个NullPointerException,我仍然不知道如何修复它

日志:

09-

有什么建议吗?

您的上下文为空

如果您查看堆栈跟踪,就会知道这一点

此外,未声明版本。它甚至不应该编译

编辑 抛出NPE的方法中有3个变量。它必须是其中之一。所以您的上下文不可能在任何地方初始化为null,或者您的packagemanager不太可能为null,或者您的packageinfo也不太可能为null,因为它应该引发异常

我建议您测试所有三个,尤其是上下文


另外,您的版本字段不是静态的,无法从getPackageVersion访问,这是静态的

可能getPackageVersion返回null?实际上我想我知道它返回null的原因,但如何修复它。**返回版本;**应该在try-catch块中,但是当我这样做时,我得到的错误更改返回类型为void。不,这不是因为这个…我只是用LogCat更新了我的问题,并且声明了版本,我只是忘记添加它。
15 15:47:37.752: WARN/System.err(8150): java.lang.NullPointerException
09-15 15:47:37.752: WARN/System.err(8150):     at com.stampii.stampii.comm.rpc.C.getPackageVersion(RPCCommunicator.java:1035)
09-15 15:47:37.752: WARN/System.err(8150):     at com.stampii.stampii.comm.rpc.C.checkClientApiVer(RPCCommunicator.java:1048)
09-15 15:47:37.752: WARN/System.err(8150):     at com.stampii.stampii.comm.rpc.B.executeBefore(InfoStartRPCPacket.java:103)
09-15 15:47:37.752: WARN/System.err(8150):     at com.stampii.stampii.user.UserLogin$2.onClick(UserLogin.java:215)
09-15 15:47:37.752: WARN/System.err(8150):     at android.view.View.performClick(View.java:2408)
09-15 15:47:37.752: WARN/System.err(8150):     at android.view.View$PerformClick.run(View.java:8817)
09-15 15:47:37.752: WARN/System.err(8150):     at android.os.Handler.handleCallback(Handler.java:587)
09-15 15:47:37.752: WARN/System.err(8150):     at android.os.Handler.dispatchMessage(Handler.java:92)
09-15 15:47:37.762: WARN/System.err(8150):     at android.os.Looper.loop(Looper.java:144)
09-15 15:47:37.762: WARN/System.err(8150):     at android.app.ActivityThread.main(ActivityThread.java:4937)
09-15 15:47:37.762: WARN/System.err(8150):     at java.lang.reflect.Method.invokeNative(Native Method)
09-15 15:47:37.762: WARN/System.err(8150):     at java.lang.reflect.Method.invoke(Method.java:521)
09-15 15:47:37.762: WARN/System.err(8150):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
09-15 15:47:37.762: WARN/System.err(8150):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
09-15 15:47:37.762: WARN/System.err(8150):     at dalvik.system.NativeStart.main(Native Method)
09-15 15:47:37.762: WARN/ERROR(8150):  Error  - java.lang.NullPointerException