2013-02-04 22 views
2

我已經在我的項目中實現了應用內結算,但有時它會給出以下NullPointerException IabHelper.launchPurchaseFlow()方法。目前我使用保留的ID進行測試,並且apk沒有簽名。NullPointerException InAppBilling.IabHelper.launchPurchaseFlow(IabHelper.java:356)

02-01 01:53:56.097: E/AndroidRuntime(9314): java.lang.NullPointerException 
02-01 01:53:56.097: E/AndroidRuntime(9314):  at com.example.app.InAppBilling.IabHelper.launchPurchaseFlow(IabHelper.java:356) 
02-01 01:53:56.097: E/AndroidRuntime(9314):  at com.example.app.InAppBilling.IabHelper.launchPurchaseFlow(IabHelper.java:307) 
02-01 01:53:56.097: E/AndroidRuntime(9314):  at com.example.app.MYTabActivity$4.onClick(MYTabActivity.java:418) 
02-01 01:53:56.097: E/AndroidRuntime(9314):  at com.android.internal.app.AlertController$ButtonHandler.handleMessage 
. 

。 。

回答

4

可能幫助你:http://code.google.com/p/android/issues/detail?id=41407

// in IapHelper.java line 357 
if (listener != null) 
    listener.onIabPurchaseFinished(result, null); 
flagEndAsync(); // Added 
return; // Added 
+0

非常感謝。這解決了我面臨兩天的問題。 –

+0

我並不是100%確定我的編輯是正確的,因爲如果調用成功,我們不調用'flagEndAsync()',但我並不熟悉該類的其餘部分。把它放在'finally'語句或類似的東西中可能會更好。確保向其他人開放編輯。 – Soup

+0

flagEndAsync()是必須的,它將結束異步操作,下次如果我們嘗試購買它不會拋出「llegalStateException:無法啓動異步操作(launchPurchaseFlow),因爲正在進行另一個異步操作(launchPurchaseFlow)。 –