[英]PayPal Button Error in Android Application
我正在嘗試在我的Android應用中的“結帳活動”中使用PayPal按鈕。 但是我收到了一個空指針異常,它指向我的代碼中的1585行。 logcat的輸出如下:
03-22 21:27:28.659: W/dalvikvm(419): threadid=1: thread exiting with uncaught exception (group=0x40014760)
03-22 21:27:28.669: E/AndroidRuntime(419): FATAL EXCEPTION: main
03-22 21:27:28.669: E/AndroidRuntime(419): java.lang.NullPointerException
03-22 21:27:28.669: E/AndroidRuntime(419): at java.math.BigDecimal.<init>(BigDecimal.java:406)
03-22 21:27:28.669: E/AndroidRuntime(419): at com.fokrul.justdeals.ActivityTab$PaypalTask$1.onClick(ActivityTab.java:1585)
03-22 21:27:28.669: E/AndroidRuntime(419): at android.view.View.performClick(View.java:3110)
03-22 21:27:28.669: E/AndroidRuntime(419): at com.paypal.android.MEP.CheckoutButton.onClick(Unknown Source)
03-22 21:27:28.669: E/AndroidRuntime(419): at android.view.View.performClick(View.java:3110)
03-22 21:27:28.669: E/AndroidRuntime(419): at android.view.View$PerformClick.run(View.java:11934)
03-22 21:27:28.669: E/AndroidRuntime(419): at android.os.Handler.handleCallback(Handler.java:587)
03-22 21:27:28.669: E/AndroidRuntime(419): at android.os.Handler.dispatchMessage(Handler.java:92)
03-22 21:27:28.669: E/AndroidRuntime(419): at android.os.Looper.loop(Looper.java:132)
03-22 21:27:28.669: E/AndroidRuntime(419): at android.app.ActivityThread.main(ActivityThread.java:4123)
03-22 21:27:28.669: E/AndroidRuntime(419): at java.lang.reflect.Method.invokeNative(Native Method)
03-22 21:27:28.669: E/AndroidRuntime(419): at java.lang.reflect.Method.invoke(Method.java:491)
03-22 21:27:28.669: E/AndroidRuntime(419): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841)
03-22 21:27:28.669: E/AndroidRuntime(419): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599)
03-22 21:27:28.669: E/AndroidRuntime(419): at dalvik.system.NativeStart.main(Native Method)
我的PayPal活動的Onclick方法代碼如下:
class PaypalTask extends AsyncTask<Void, Void, Void> {
protected final char[] TOTAL_GBP = null;
public Void doInBackground(Void... arg0) {
ppObject = PayPal.initWithAppID(getBaseContext(), "APP-80W284485P519543T", PayPal.ENV_SANDBOX);
return null;
}
@Override
protected void onPostExecute(Void result) {
super.onPostExecute(result);
btnPaypal = ppObject.getCheckoutButton(getApplicationContext(), PayPal.BUTTON_278x43, CheckoutButton.TEXT_PAY);
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
params.addRule(RelativeLayout.CENTER_HORIZONTAL);
params.addRule(RelativeLayout.CENTER_VERTICAL);
btnPaypal.setLayoutParams(params);
rlPay.addView(btnPaypal);
if(utils.prefs.getBoolean("isLogged", false)) btnPaypal.setVisibility(View.VISIBLE); else btnPaypal.setVisibility(View.GONE);
btnPaypal.setOnClickListener(new OnClickListener(){
public void onClick(View view) {
// to check whether there are any books in the shopping cart
if(!cid.isEmpty()){
PayPalPayment payment = new PayPalPayment();
<<LINE 1585-->>>>> payment.setSubtotal(new BigDecimal(TOTAL_GBP));
payment.setCurrencyType("USD");
payment.setRecipient(Utils.PAYPAL_ACCOUNT);
payment.setPaymentType(PayPal.PAYMENT_TYPE_GOODS);
Intent checkoutIntent = PayPal.getInstance().checkout(payment, getBaseContext());
startActivityForResult(checkoutIntent, 1);
}else{
utils.showToast("Your shopping cart is empty.");
// The PayPal button needs to be updated so that the user can click on it again.
btnPaypal.updateButton();
}
}
});
}
}
有什么想法可能會出問題嗎?
顯而易見的答案是評論摘要:
protected final char[] TOTAL_GBP = null;
不要將null
設置為BigDecimal(TOTAL_GBP)@ payment.setSubtotal(new BigDecimal(TOTAL_GBP))的構造函數參數;
示例: payment.setSubtotal(new BigDecimal("8.25"));
取自http://androiddevelopement.blogspot.com/2011/04/adding-paypal-payment-in-android.html有關Paypal和android集成。
最后但同樣重要的是:
您可能還想重新考慮AsyncTask
流程和doInBackground()
方法以及onPostExecute()
,而通常無需在AsyncTask
設置onClick()
偵聽器。 他們寧可必須在您的Activity中並在您的主線程中運行,然后在單擊按鈕時單擊AsyncTask
執行即可。
有關AsyncTasks的更多信息: http : //developer.android.com/reference/android/os/AsyncTask.html AsyncTask Android示例
希望它能使事情有所澄清。
干杯
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.