onClickListener没有第二次调用Android

时间:2012-09-24 13:32:42

标签: java android multithreading onclicklistener

我正在做PayPal付款,因为我必须在onCreate()方法中运行线程,该方法使用Paypal图像初始化Button我正在调用一个函数来验证上面的字段然后触发API,如果用户错误Toast是看起来“......这不是白痴。”但在此之后,当我纠正那个字段并再次点击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监听器代码调用该线程btn我正在寻找另一种方式。

请...任何帮助将不胜感激......

2 个答案:

答案 0 :(得分:1)

试试这个..

创建开始 thread 内部 onClick()的{​​{1}}方法。

<强>例如

Button

答案 1 :(得分:0)

我认为这很容易。使用paypal时你必须使用paypal创建按钮,因此paypal提供了一种更新该按钮的方法,即updateButton()你只想调用该方法。 因此,每次点击时,您的按钮都能正常工作。