2012-09-24 84 views
0

我正在做paypal付款,因为我必须在onCreate()方法中初始化Button与PayPal图像我调用一个函数从它验证上述字段,然后触发一个API ,如果用户错误的Toast出现了“......这个提交不是空白的”。但之后,当我纠正该领域,再次点击Btn,然后它什么都不做。onClickListener不会被第二次调用Android

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我正在寻找另一种方式。

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

+0

请问您可以上传代码吗? – Lucifer

+0

你能发表一些代码吗?我不明白什么问题确切地是 – zeiger

+0

我加了代码,请检查... – MobileEvangelist

回答

0

我觉得这很容易。在使用PayPal时,你必须使用PayPal创建按钮,所以有一种由PayPal提供的方法来更新该按钮,即只需调用该方法的updateButton()。 因此,每次点击时,你的按钮都能正常工作。

1

试试这个..

创建开始ButtonthreadonClick()方法..

例如:

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(); 
    } 
    }); 
+0

Yaa我做了同样的事情,实际上getDealResponseLogic();这个方法只是检查EditText字段有没有有效的条目,如果是的话,我调用新的方法(),启动线程并触发一个API,然后我解析JSON从它,如果没有然后只是吐司的错误,而不是调用该方法()会触发一个API。 – MobileEvangelist

+0

实际上,我尝试在我的类中实现onclickListener,并将它传递给按钮onclicklistener,并在onClick()调用getDealREsponseLogic()但仍然只调用一次,即使不在调试模式。 – MobileEvangelist

+0

@Jay我希望你,如果你使用某种标记机制使用布尔,你已经设置它在一个适当的方式..请参阅 –