2011-07-04 55 views
5

https://github.com/robotmedia/AndroidBillingLibraryCách sử dụng Thư viện thanh toán Android?

Tôi đã tạo riêng lớp thanh toán:

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); 
    } 

khi người dùng nhấn nút trong Preferences tôi làm:

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; 
     } 
    }); 

và nhận được lỗi sau:

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) 

Có gì sai trong mã của tôi?

Ngoài ra, tài liệu nói

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.

Nhưng trên thực tế onBillingChecked() không được gọi.

Trả lời

2

tôi nên đọc tài liệu một cách cẩn thận hơn:

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

Vì vậy, nó được bắt đầu làm việc khi tôi đã thay thế trong mã của tôi extends Activity với extends AbstractBillingActivity (trên thực tế kể từ khi tôi đã sử dụng PreferenceActivity, không chỉ Activity, Tôi cũng phải chỉnh sửa số AbstractBillingActivity).

+1

Bắt tốt về PreferenceActivity. Chúng ta nên thêm các lớp tiện lợi hơn cho các lớp con Hoạt động phổ biến nhất (PreferenceActivity, ListActivity, vv). – hpique

Các vấn đề liên quan