0

私はPaypalの画像でボタンを初期化するonCreate()メソッドでスレッドを実行する必要があるため、Paypalの支払いを行っています。ユーザーが間違ったToastが表示された場合、上記のフィールドを検証してからAPIを起動する関数を1つ呼び出しています。 ...これは空白ではありません。」しかし、この後、そのフィールドを修正してもう一度Btnをクリックすると、何もしません。

Thread libraryInitializationThread = new Thread() {
            public void run() {


                initLibrary();

                // The library is initialised so let's create our CheckoutButton
                // and update the UI.
                if (PayPal.getInstance().isLibraryInitialized()) {

                    runOnUiThread(new Runnable() {
                        public void run() {
                            /**
                             * Create our CheckoutButton and update the UI.
                             */
                            PayPal pp = PayPal.getInstance();

                            /**
                             * Get the CheckoutButton. There are five
                             * differentsizes. The text on the button can either
                             * be of type TEXT_PAY or TEXT_DONATE.
                             **/
                            launchChainedPaymentBtn = pp.getCheckoutButton(
                                    BuyDeal.this, PayPal.BUTTON_194x37,
                                    CheckoutButton.TEXT_PAY);

                            /**
                             * You'll need to have an OnClickListener for the
                             * CheckoutButton. For this application, MPL_Example
                             * implements OnClickListener and we have the
                             * onClick() method below.
                             **/
                            launchChainedPaymentBtn
                                    .setOnClickListener(new OnClickListener() {

                                        @Override
                                        public void onClick(View v) {

                                            // dealResponse
                                            getDealResponseLogic();

                                        }
                                    });
                            //
                            BottomBtnsLinearLayout
                                    .addView(launchChainedPaymentBtn);
                            Log.v("Btn added ", "SuccessFully...");
                            Flag = true;
                        }
                    });
                    //
                    //
                    BottomBtnsLinearLayout.addView(launchChainedPaymentBtn);
                    Log.v("Btn added ", "SuccessFully...");
                    // }
                    // });

                    Log.i("Lib. initialized", "now...");

                    /** Calling Thread to add Btn to It! **/
                    AddPayPalBtn.start();

                } else {

                    Log.i("Cannot Initialize Payment Btn",
                            "setAPyment Btn..failed due to Lib. initialization..");
                }

            }

        };
        libraryInitializationThread.start();

アクティビティの onCreate() メソッドで上記のスレッドを呼び出しました。

dealResponseLogic() のコードは検証のみを扱います。

initLibrary(); インターネットを利用する PayPal インスタンスを取得し、そのインスタンスのいくつかのフィールドを設定します。

私は別の方法を探している btn Listener コード btn からそのスレッドを呼び出すことができることを知っています。

お願いします...どんな助けでも大歓迎です...

4

2 に答える 2

1

これを試して..

..のメソッド内で作成して開始します。thread onClick()Button

例えば:

Button b = (Button)findViewById(R.id.button_Start);

b.closeButton.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {

        Thread t = new Thread(new Runnable(){

           public void run(){

               // DO YOUR LONG TIME TAKING WORK HERE.......

             }


                });

             t.start();
    }
  });
于 2012-09-24T16:52:23.220 に答える
0

とても簡単だと思います。ペイパルを使用している間は、ペイパルを使用してボタンを作成する必要があるため、そのボタンを更新するためにペイパルが提供する1つのメソッド、つまり updateButton() があり、そのメソッドを呼び出すだけです。そのため、ボタンはクリックするたびに正常に機能します。

于 2012-10-05T08:26:27.890 に答える