You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

安卓内购代码出现NullPointerException问题求助

安卓内购BillingClient空指针异常解决方案

错误详情

NullPointerException: Attempt to invoke virtual method 'void com.android.billingclient.api.BillingClient.startConnection(com.android.billingclient.api.BillingClientStateListener)' on a null object reference

核心原因

你在onCreate方法中重新定义了局部变量BillingClient billingClient,覆盖了类的全局成员变量,导致全局的billingClient始终未完成初始化,调用establishConnection()时触发空指针异常。

修复步骤

1. 修正BillingClient初始化代码

将onCreate中的局部变量声明移除,直接给全局变量赋值:

// 原错误代码
// BillingClient billingClient = BillingClient.newBuilder(this)...

// 修改后
billingClient = BillingClient.newBuilder(this)
        .setListener(purchasesUpdatedListener)
        .enablePendingPurchases()
        .build();

2. 修复其他潜在问题

除了空指针,你的代码还有几处需要完善的地方,避免后续报错:

  • 初始化productDetails:botonComprar方法依赖的productDetails未赋值,需在showProducts的回调中填充:
public void onProductDetailsResponse(BillingResult billingResult,
                                     List<ProductDetails> productDetailsList) {
    if (billingResult.getResponseCode() == BillingClient.BillingResponseCode.OK && !productDetailsList.isEmpty()) {
        productDetails = productDetailsList.get(0);
    }
}
  • 初始化prefs:全局prefs变量未初始化,在onCreate中添加:
prefs = new Prefs(this); // 根据你的Prefs类构造方法调整参数
  • 统一产品类型:onResume中查询的是INAPP类型,但商品定义为SUBS(订阅),需保持一致:
billingClient.queryPurchasesAsync(
        QueryPurchasesParams.newBuilder().setProductType(BillingClient.ProductType.SUBS).build(),
        (billingResult, list) -> {
            // 原有逻辑
        }
);
  • 完善购买结果监听:补全PurchasesUpdatedListener的逻辑,处理购买成功的情况:
@Override
public void onPurchasesUpdated(BillingResult billingResult, List<Purchase> purchases) {
    if (billingResult.getResponseCode() == BillingClient.BillingResponseCode.OK && purchases != null) {
        for (Purchase purchase : purchases) {
            handlePurchase(purchase);
        }
    }
}

内容的提问来源于stack exchange,提问作者BichitoGris

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 18:01:18