Получение исключения нулевой точки при совершении покупки в приложении - PullRequest
0 голосов
/ 25 марта 2019

При тестировании с android.test.purchased покупка работает хорошо, но при броске в игровой магазин она вылетает при завершении покупки.

Ниже приведен код для покупки завершен.

Это аварийный стек:

java.lang.NullPointerException:

at android.widget.Toast.<init> (Toast.java:171)
  at android.widget.Toast.makeText (Toast.java:556)
  at android.widget.Toast.makeText (Toast.java:514)
  at com.py.reward.fragments.homefragment.onPurchasesUpdated (homefragment.java:321)
  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:106)
  at android.os.Looper.loop (Looper.java:164)
  at android.app.ActivityThread.main (ActivityThread.java:7000)
  at java.lang.reflect.Method.invoke (Native Method)
  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:441)
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1408)

    @Override
public void onPurchasesUpdated(int responseCode, @Nullable List<com.android.billingclient.api.Purchase> purchases) {


    if (responseCode == BillingClient.BillingResponse.OK
            && purchases != null) {
        Toast.makeText(getActivity(), "Purchased", Toast.LENGTH_SHORT).show();
        adddata();

        for (com.android.billingclient.api.Purchase purchase : purchases) {
            ConsumeResponseListener listener = new ConsumeResponseListener() {

                @Override
                public void onConsumeResponse(@BillingClient.BillingResponse int responseCode, String outToken) {
                    if (responseCode == BillingClient.BillingResponse.OK) {
                        // Handle the success of the consume operation.
                        // For example, increase the number of coins inside the user's basket.
                        Toast.makeText(getContext(), "Item Available for another purchase", Toast.LENGTH_SHORT).show();
                    }
                }

            };

            mBillingClient.consumeAsync(purchase.getPurchaseToken(), listener);

        }
    } else if (responseCode == BillingClient.BillingResponse.USER_CANCELED) {
        // Handle an error caused by a user cancelling the purchase flow.

    } else if (responseCode == BillingClient.BillingResponse.ITEM_ALREADY_OWNED) {
        Toast.makeText(getContext(), "Purchase Limit Reached! Try again later", Toast.LENGTH_SHORT).show();

    } else{

        // Handle any other error codes.
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...