Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/369.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 getPurchasesList空指针异常_Java_Android - Fatal编程技术网

Java getPurchasesList空指针异常

Java getPurchasesList空指针异常,java,android,Java,Android,我正在尝试为应用内购买实现某种安全性 我正在尝试实现一个名为checkPurchases的方法,该方法将使用billingClient.queryPurchases() 然而,当我尝试这样做时,我得到一个空指针异常和运行时异常。 我确实理解空指针异常是什么,但我的问题是,我正在测试设备上测试应用程序,该设备已经“购买”了应用程序内产品,应该将其放入purchasesList。所以我不明白为什么列表是空的 运行时异常: Fatal Exception: java.lang.RuntimeExcep

我正在尝试为应用内购买实现某种安全性
我正在尝试实现一个名为checkPurchases的方法,该方法将使用billingClient.queryPurchases()
然而,当我尝试这样做时,我得到一个空指针异常和运行时异常。 我确实理解空指针异常是什么,但我的问题是,我正在测试设备上测试应用程序,该设备已经“购买”了应用程序内产品,应该将其放入purchasesList。所以我不明白为什么列表是空的

运行时异常:

Fatal Exception: java.lang.RuntimeException: Unable to start activity ComponentInfo{studios.kundby.skatmomsberegner/studios.kundby.skatmomsberegner.InAppBilling}: java.lang.NullPointerException: Attempt to invoke interface method 'int java.util.List.size()' on a null object reference
       at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3108)
       at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3251)
       at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
       at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
       at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1948)
       at android.os.Handler.dispatchMessage(Handler.java:106)
       at android.os.Looper.loop(Looper.java:214)
       at android.app.ActivityThread.main(ActivityThread.java:7045)
       at java.lang.reflect.Method.invoke(Method.java)
       at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:964)`<br><br>
NullPointer Exception:<br>
`Caused by java.lang.NullPointerException: Attempt to invoke interface method 'int java.util.List.size()' on a null object reference
       at studios.kundby.skatmomsberegner.InAppBilling.checkPurchases(InAppBilling.java:199)
       at studios.kundby.skatmomsberegner.InAppBilling.onCreate(InAppBilling.java:106)
       at android.app.Activity.performCreate(Activity.java:7327)
       at android.app.Activity.performCreate(Activity.java:7318)
       at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1271)
       at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3088)
       at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3251)
       at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
       at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
       at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1948)
       at android.os.Handler.dispatchMessage(Handler.java:106)
       at android.os.Looper.loop(Looper.java:214)
       at android.app.ActivityThread.main(ActivityThread.java:7045)
       at java.lang.reflect.Method.invoke(Method.java)
       at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:964)


我想检查列表中是否包含项\u SKU\u ADREMOVAL,如果包含项,请向SharedReferences添加布尔值,这将在稍后处理如何反应(这非常有效)

在您的情况下,这一行:

Purchase.PurchasesResult result = mBillingClient.queryPurchases(BillingClient.SkuType.INAPP);
返回一个对象,其中
result.getPurchasesList()==null
,这将导致NPE处于第行

if(result.getPurchasesList().size() >= 0)

因为您正在对空对象调用
.size()

,我理解。但我的问题是,我在一台设备上测试了这个问题,该设备已经在测试帐户上购买了一个应用程序,所以在我看来,列表中应该有一项。你能解决这个问题吗@AndersPedersen?我正处于完全相同的情况。@Sagar我通过将getPurchasesList包装在if语句中,检查它是否为null来解决它:if(result.getPurchasesList()!=null){if(result.getPurchasesList().size()>0){@AndersPedersen我也有完全相同的问题。你知道为什么即使我购买了getPurchasesList,它也会返回null吗?
if(result.getPurchasesList().size() >= 0)