java.lang.NullPointerException: Attempt to invoke interface method 'void com.badlogic.gdx.pay.PurchaseObserver.handlePurchase(com.badlogic.gdx.pay.Transaction)' on a null object reference
at com.badlogic.gdx.pay.android.googlebilling.PurchaseManagerGoogleBilling.handlePurchase(PurchaseManagerGoogleBilling.java:243)
at com.badlogic.gdx.pay.android.googlebilling.PurchaseManagerGoogleBilling.onPurchasesUpdated(PurchaseManagerGoogleBilling.java:209)
at com.android.billingclient.api.BillingClientImpl$1.onReceive(BillingClientImpl.java:136)
at com.android.billingclient.api.LocalBroadcastManager.executePendingBroadcasts(LocalBroadcastManager.java:303)
at com.android.billingclient.api.LocalBroadcastManager.access$000(LocalBroadcastManager.java:44)
at com.android.billingclient.api.LocalBroadcastManager$1.handleMessage(LocalBroadcastManager.java:114)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:211)
at android.app.ActivityThread.main(ActivityThread.java:5317)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1016)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:811)
大多数时候,我的购买都成功完成,并且我的Callback上调用handlePurchase()时,一切正常。但是,有时我会从gdx-pay内部获得此异常。似乎表明观察者为空。
这是什么原因,我可以在代码中采取什么措施来防止此问题发生?
答案 0 :(得分:1)
您是否正在使用dispose()方法,并且在设置新的计费客户端后是否会出现问题? 如果您使用googlebilling实施,则存在一个错误。参见gdx-pay issue 180。
解决方法是:不要使用dispose()并持有计费客户端。更好的方法是使用11.4-SNAPSHOT。