Я не очень опытен в Android, и я взял на себя чужую работу и попросил реализовать в биллинге v3.java.lang.IllegalStateException: Не удалось выполнить метод
Я отлажена код и находится вопрос здесь
//IF THE BUTTON IS VISIBLE, AND CLICKED, PURCHASE CALCULATOR
public void unlockCalculators(View v) {
String payload = "";
mHelper.launchPurchaseFlow(this, SKU_riskCalc, RC_REQUEST,
mPurchaseFinishedListener, payload); <---- LINE 250
Log.d("BP_EXPERT", "PURCHASE RISK CALC");
}
Вот где mPurchasedListener определяется
IabHelper.OnIabPurchaseFinishedListener mPurchaseFinishedListener = new IabHelper.OnIabPurchaseFinishedListener()
{
@Override
public void onIabPurchaseFinished(IabResult result, Purchase purchase)
{
Log.d(TAG, "Purchase finished: " + result + ", purchase: " + purchase);
if (result.isFailure()) {
complain("Error purchasing: " + result);
}
if (!verifyDeveloperPayload(purchase)) {
complain("Error purchasing. Authenticity verification failed.");
return;
}
else if (purchase.getSku().equals(SKU_riskCalc)){
//UPDATE SHARED PREFERENCES HERE...
SharedPreferences prefs = getSharedPreferences("BloodPressure",MODE_PRIVATE);
SharedPreferences.Editor edit = prefs.edit();
edit.putBoolean("purchased_calcs", true);
edit.commit();
Log.d("BP_EXPERT", "PURCHASING RISK CALC");
//SELECT CORRECT LAYOUT AFTER PURCHASE
createStuff();
}
else if (purchase.getSku().equals(SKU_all)){
//UPDATE SHARED PREFERENCES HERE...
SharedPreferences prefs = getSharedPreferences("BloodPressure",MODE_PRIVATE);
SharedPreferences.Editor edit = prefs.edit();
edit.putBoolean("purchased_all", true);
edit.commit();
Log.d("BP_EXPERT", "PURCHASING ALL CONTENT");
//SELECT CORRECT LAYOUT AFTER PURCHASE
createStuff();
}
Log.d(TAG, "Purchase successful.");
}
};
Когда приложение входит поток покупки запуск, когда его вынудили закрыты. Если у кого-то есть какие-то идеи относительно того, что может быть проблемой, я бы очень признателен. Я пришел на эту проблему, я не совсем уверен, что вызывает его, когда я нажимаю на кнопку, я получаю следующее в моем LogCat
7-09 11:48:14.495: E/AndroidRuntime(1702): FATAL EXCEPTION: main
07-09 11:48:14.495: E/AndroidRuntime(1702): java.lang.IllegalStateException: Could not execute method of the activity
07-09 11:48:14.495: E/AndroidRuntime(1702): at android.view.View$1.onClick(View.java:2072)
07-09 11:48:14.495: E/AndroidRuntime(1702): at android.view.View.performClick(View.java:2408)
07-09 11:48:14.495: E/AndroidRuntime(1702): at android.view.View$PerformClick.run(View.java:8817)
07-09 11:48:14.495: E/AndroidRuntime(1702): at android.os.Handler.handleCallback(Handler.java:587)
07-09 11:48:14.495: E/AndroidRuntime(1702): at android.os.Handler.dispatchMessage(Handler.java:92)
07-09 11:48:14.495: E/AndroidRuntime(1702): at android.os.Looper.loop(Looper.java:144)
07-09 11:48:14.495: E/AndroidRuntime(1702): at android.app.ActivityThread.main(ActivityThread.java:4937)
07-09 11:48:14.495: E/AndroidRuntime(1702): at java.lang.reflect.Method.invokeNative(Native Method)
07-09 11:48:14.495: E/AndroidRuntime(1702): at java.lang.reflect.Method.invoke(Method.java:521)
07-09 11:48:14.495: E/AndroidRuntime(1702): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:858)
07-09 11:48:14.495: E/AndroidRuntime(1702): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
07-09 11:48:14.495: E/AndroidRuntime(1702): at dalvik.system.NativeStart.main(Native Method)
07-09 11:48:14.495: E/AndroidRuntime(1702): Caused by: java.lang.reflect.InvocationTargetException
07-09 11:48:14.495: E/AndroidRuntime(1702): at com.bpxpert.bloodpressure.CalculatorRisk.unlockCalculators(CalculatorRisk.java:250)
07-09 11:48:14.495: E/AndroidRuntime(1702): at java.lang.reflect.Method.invokeNative(Native Method)
07-09 11:48:14.495: E/AndroidRuntime(1702): at java.lang.reflect.Method.invoke(Method.java:521)
07-09 11:48:14.495: E/AndroidRuntime(1702): at android.view.View$1.onClick(View.java:2067)
07-09 11:48:14.495: E/AndroidRuntime(1702): ... 11 more
07-09 11:48:14.495: E/AndroidRuntime(1702): Caused by: android.view.WindowManager$BadTokenException: Unable to add window -- token [email protected] is not valid; is your activity running?
07-09 11:48:14.495: E/AndroidRuntime(1702): at android.view.ViewRoot.setView(ViewRoot.java:509)
07-09 11:48:14.495: E/AndroidRuntime(1702): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:177)
07-09 11:48:14.495: E/AndroidRuntime(1702): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:91)
07-09 11:48:14.495: E/AndroidRuntime(1702): at android.view.Window$LocalWindowManager.addView(Window.java:424)
07-09 11:48:14.495: E/AndroidRuntime(1702): at android.app.Dialog.show(Dialog.java:241)
07-09 11:48:14.495: E/AndroidRuntime(1702): at com.bpxpert.bloodpressure.CalculatorRisk.alert(CalculatorRisk.java:382)
07-09 11:48:14.495: E/AndroidRuntime(1702): at com.bpxpert.bloodpressure.CalculatorRisk.complain(CalculatorRisk.java:374)
07-09 11:48:14.495: E/AndroidRuntime(1702): at com.bpxpert.bloodpressure.CalculatorRisk$3.onIabPurchaseFinished(CalculatorRisk.java:277)
07-09 11:48:14.495: E/AndroidRuntime(1702): at com.bpxpert.bloodpressure.util.IabHelper.launchPurchaseFlow(IabHelper.java:376)
07-09 11:48:14.495: E/AndroidRuntime(1702): at com.bpxpert.bloodpressure.util.IabHelper.launchPurchaseFlow(IabHelper.java:324)
07-09 11:48:14.495: E/AndroidRuntime(1702): ... 15 more
07-09 11:48:14.505: W/ActivityManager(105): Force finishing activity com.bpxpert.bloodpressure/.BloodPressureActivity
Если кто-то может указать мне, где я Я ошибаюсь, я был бы очень признателен.
Спасибо @ Rajeev за то, что он вернулся ко мне. строка 382 является последней строкой метода оповещения 'void alert (String message) { AlertDialog.Builder bld = new AlertDialog.Builder (это); bld.setMessage (сообщение); bld.setNeutralButton ("OK", null); Log.d (TAG, «Отображение диалогового окна предупреждений:« + сообщение »); bld.create(). Show(); } ', но у меня также есть эта функция в других действиях для покупок у них, но у меня нет ошибок –
, когда я вхожу в метод aunchPurchaseFlow, я также устанавливаю точку останова в методе предупреждения ** bld.create(). Show() ; ** эта строка кажется проблемой, –
AlertDialog.Builder bld = new AlertDialog.Builder (this); будет ассоциировать новый диалог с активностью, которая создает диалог. Когда вы делаете bld.create.show(), активность (== this), которая создала это диалоговое окно, уже уничтожена. Убедитесь, что метод finish() вызван в этой активности. – Rajeev