2017-12-13 8 views
0

ちょっと私はinAppPurchaseのBillingFlowを開始したい場合、例外をスローします:ArrayOutOfBound。 6行目でスローされますが、このリストのパラメータの前に設定されているため、このリストはnullにはなりません。だから、誰も "skuDetailsList.get(0)"を呼び出すことによってこの例外がスローされる理由を知っていますか?アプリBillling OutOfBoundException

List<String> skuList = new ArrayList<>(); 
     skuList.add("premium_upgrade"); 
     SkuDetailsParams.Builder params = SkuDetailsParams.newBuilder(); 
     params.setSkusList(skuList).setType(BillingClient.SkuType.INAPP); 
     mBillingClient.querySkuDetailsAsync(params.build(),(responseCode,skuDetailsList) -> { 
      SkuDetails skuDetails = skuDetailsList.get(0); 
      String sku = skuDetails.getSku(); 
      BillingFlowParams.Builder builder = BillingFlowParams.newBuilder().setSku(sku).setType(BillingClient.SkuType.INAPP); 
      mBillingClient.launchBillingFlow(this,builder.build()); 
       }); 

答えて

0

ArrayOutOfBoundExceptionは、配列の範囲外のデータにアクセスしようとしていると言います。以来、あなたが取得しているとラインskuDetailsList.get(0)でexeceptionはskuDetailsList

すると、あなたのコードをデバッグし、あなたがskuDetailsList

に適切な結果を得ているかどうかを確認してみてください、リスト内の位置0のデータが存在しないことを言います