2011-07-04 14 views
5

https://github.com/robotmedia/AndroidBillingLibraryJak korzystać z Biblioteki fakturowania Android?

stworzyłem osobny klasa rozliczeniowy:

public class Billing extends AbstractBillingActivity { 
    private static final String TAG = "Billing"; 

    public Billing() { 
    } 

    @Override 
    public void onBillingChecked(boolean supported) { 
     Log.i(TAG, "Billing supported: " + supported); 
    } 

raz użytkownik naciśnie przycisk w preferencjach zrobić:

Preference buyPref = (Preference) findPreference("pref_billing_buy"); 
    buyPref.setOnPreferenceClickListener(new OnPreferenceClickListener() { 
     public boolean onPreferenceClick(Preference preference) { 
      if (Debug.Yes) Log.d(TAG, "Buying ad-free version"); 
      Billing billing = new Billing(); 
      billing.checkBillingSupported(); 

      return true; 
     } 
    }); 

i otrzymuję następujący błąd:

07-04 20:21:22.797: ERROR/AndroidRuntime(7172): FATAL EXCEPTION: main 
07-04 20:21:22.797: ERROR/AndroidRuntime(7172): java.lang.NullPointerException 
07-04 20:21:22.797: ERROR/AndroidRuntime(7172):  at android.content.ContextWrapper.getPackageName(ContextWrapper.java:120) 
07-04 20:21:22.797: ERROR/AndroidRuntime(7172):  at net.robotmedia.billing.BillingService.getActionForIntent(BillingService.java:76) 
07-04 20:21:22.797: ERROR/AndroidRuntime(7172):  at net.robotmedia.billing.BillingService.createIntent(BillingService.java:69) 
07-04 20:21:22.797: ERROR/AndroidRuntime(7172):  at net.robotmedia.billing.BillingService.checkBillingSupported(BillingService.java:58) 
07-04 20:21:22.797: ERROR/AndroidRuntime(7172):  at net.robotmedia.billing.BillingController.checkBillingSupported(BillingController.java:114) 
07-04 20:21:22.797: ERROR/AndroidRuntime(7172):  at net.robotmedia.billing.AbstractBillingActivity.checkBillingSupported(AbstractBillingActivity.java:42) 
07-04 20:21:22.797: ERROR/AndroidRuntime(7172):  at spb.bridges.Preferences$1.onPreferenceClick(Preferences.java:212) 
07-04 20:21:22.797: ERROR/AndroidRuntime(7172):  at android.preference.Preference.performClick(Preference.java:812) 
07-04 20:21:22.797: ERROR/AndroidRuntime(7172):  at android.preference.PreferenceScreen.onItemClick(PreferenceScreen.java:198) 
07-04 20:21:22.797: ERROR/AndroidRuntime(7172):  at android.widget.AdapterView.performItemClick(AdapterView.java:284) 
07-04 20:21:22.797: ERROR/AndroidRuntime(7172):  at android.widget.ListView.performItemClick(ListView.java:3382) 
07-04 20:21:22.797: ERROR/AndroidRuntime(7172):  at android.widget.AbsListView$PerformClick.run(AbsListView.java:1696) 
07-04 20:21:22.797: ERROR/AndroidRuntime(7172):  at android.os.Handler.handleCallback(Handler.java:587) 
07-04 20:21:22.797: ERROR/AndroidRuntime(7172):  at android.os.Handler.dispatchMessage(Handler.java:92) 
07-04 20:21:22.797: ERROR/AndroidRuntime(7172):  at android.os.Looper.loop(Looper.java:144) 
07-04 20:21:22.797: ERROR/AndroidRuntime(7172):  at android.app.ActivityThread.main(ActivityThread.java:4937) 
07-04 20:21:22.797: ERROR/AndroidRuntime(7172):  at java.lang.reflect.Method.invokeNative(Native Method) 
07-04 20:21:22.797: ERROR/AndroidRuntime(7172):  at java.lang.reflect.Method.invoke(Method.java:521) 
07-04 20:21:22.797: ERROR/AndroidRuntime(7172):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 
07-04 20:21:22.797: ERROR/AndroidRuntime(7172):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 
07-04 20:21:22.797: ERROR/AndroidRuntime(7172):  at dalvik.system.NativeStart.main(Native Method) 

Co jest nie tak w moim kodzie?

Również dokumentacja mówi

When started your AbstractBillingActivity subclass will check if in-app billing is supported, followed by a call to onBillingChecked(boolean), which has to be implemented by the subclass.

Ale faktycznie onBillingChecked() nie nazywa.

Odpowiedz

2

Byłbym czytanie dokumentacji dokładniej:

AbstractBillingActivity is an abstract activity that provides default integration with in-app billing.

tak, to zaczęło działać, gdy mam wymienić w moim kodu extends Activity z extends AbstractBillingActivity (właściwie od Użyłem PreferenceActivity, nie tylko Activity, Musiałem również edytować AbstractBillingActivity).

+1

Dobry połów o PreferenceActivity. Powinniśmy dodać więcej klas wygody dla najpopularniejszych podklas działań (PreferenceActivity, ListActivity i tak dalej). – hpique

Powiązane problemy