奇怪的解析崩溃android - 尝试调用虚方法'int java.lang.Integer.intValue()

Roh*_*mar 4 android parse-platform

所以基本上我已经尝试了所有的东西,但我一直在崩溃.它有时只会崩溃.这是我的代码:

if (mCurrentUser != null && mCurrentUser.containsKey(Constants.TABLE_POINTS)) {
    int points = mCurrentUser.getInt(Constants.TABLE_POINTS) + AppSingleton.sPointsLookupMap.get(pointsKey);
                            mCurrentUser.put(Constants.TABLE_POINTS, points);
                            mCurrentUser.saveInBackground();
}
Run Code Online (Sandbox Code Playgroud)

堆栈跟踪:

java.lang.NullPointerException: Attempt to invoke virtual method 'int java.lang.Integer.intValue()' on a null object reference
at com.titlesource.ts_foodsource.fragments.KitchenFragment$10.done(KitchenFragment.java:654)
at com.titlesource.ts_foodsource.fragments.KitchenFragment$10.done(KitchenFragment.java:649)
at com.parse.ParseTaskUtils$2$1.run(ParseTaskUtils.java:115)
at android.os.Handler.handleCallback(Handler.java:746)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5443)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:728)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
Run Code Online (Sandbox Code Playgroud)

现在我发现intValue()正在getInt()方法中使用(在ParseObject类中):

 public int getInt(String key) {
        Number number = this.getNumber(key);
        return number == null?0:number.intValue();
    }
Run Code Online (Sandbox Code Playgroud)

为什么我得到这个例外.我尝试了一切.添加了空检查,并且还验证了该字段实际存在于mCurrentUser对象中,但都是徒劳的.

如果对此问题进行投票,请留下理由.

Dan*_*nai 13

你有一个Integernull,你试图打开它(int从它做一个简单).

由于已经检查它的getInt(String key)方法ParseObject是否为null,因此不会发生异常.

相反,它将在AppSingleton.sPointsLookupMap.get(pointsKey),所以你试图从地图中获取一个不存在的对象.

确保它存在,或者为代码的这一部分添加正确的错误处理.