3

Android アプリケーションに PayPal を統合しました。私には主な活動があります-そして活動について、私はペイパルボタンを表示します。メインアクティビティからアクセスするアクティビティについて。Paypal オブジェクトは、Application オブジェクトの OnCreate から作成されたスレッドで初期化されます。

現在、2 つの問題に直面しています。 1. Paypal ボタンは、最初にクリックしたときにのみ機能します。2回目はうまくいきません。メインメニューに戻ってからアクティビティについてに戻ると、再び機能します。ここは:

Paypal ボタンをレイアウトに追加するコード:

mDonateButton = AppObj.Instance().GetPayPalObj().getCheckoutButton( mCaller, 
                                                                            PayPal.BUTTON_152x33, 
                                                                            CheckoutButton.TEXT_PAY );
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(   LayoutParams.WRAP_CONTENT, 
                                                                    LayoutParams.WRAP_CONTENT );
mDonateButton.setLayoutParams(params);
mDonateButton.setGravity( Gravity.CENTER_HORIZONTAL );
mDonateButton.setOnClickListener( this );

LinearLayout container = (LinearLayout) findViewById( R.id.donateLayout );
container.addView(mDonateButton);

OnClick 関連のコード:

                PayPalPayment newPayment = new PayPalPayment();
                newPayment.setSubtotal(new BigDecimal(Integer.parseInt(info)));
                newPayment.setCurrencyType("USD");
                newPayment.setRecipient("xxx@xxx.com");
                newPayment.setPaymentType(PayPal.PAYMENT_TYPE_NONE);
                newPayment.setMerchantName("xxx");
                Intent paypalIntent = PayPal.getInstance().checkout(newPayment, mCaller);
                (mCaller).startActivityForResult(paypalIntent, 1);
  1. 私が持っている2番目の問題....BGでpaypal objを初期化したので、paypalの初期化が完了する前にAboutアクティビティ(paypalボタンが作成された)にアクセスすると、クラッシュします......それ?

ありがとうヨアフ

4

1 に答える 1

3

あなたがまだ答えを探しているなら、私は答えを持っています

getCheckoutButtonメソッドを見ている場合、それはContextパラメータとして取られるため、Activity別の を開始したときに発生する一時停止などActivityの場合、のインスタンスはCheckoutButton何らかの形で失われます。

updateButtonアクティビティの onResume でメソッドを使用して修正しました

    @Override
    protected void onResume() {
        /**
         * The CheckoutButton has to be updated each time the Activity is
         * resumed, otherwise the onClickListener of CheckoutButton will not work
         **/
        if (mCheckOutBtn != null && (mCheckOutBtn instanceof CheckoutButton))
            mCheckOutBtn.updateButton();
        super.onResume();
    }

これは、ライブラリと of を初期化したことを考慮しPayPalて機能します。CheckoutButtononCreateActivity

于 2012-10-10T09:45:31.300 に答える