2013-02-13 56 views
0

我有這樣的代碼,我試圖通過this.thecostpublic void click()方法,但它看起來是不工作,因爲我收到「Paymnet失敗」點擊PayPal按鈕時。如何將類中的數據傳遞給其他成員?

我出了什麼問題?

順便說一句,你叫什麼private {}private void {} - 所有這些功能()的東西?

private void initUI(int theprice) { 

     launchPayPalButton = mPayPal.getCheckoutButton(this, 
       PayPal.BUTTON_278x43, CheckoutButton.TEXT_PAY); 

     LinearLayout.LayoutParams params = new 
       LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, 
         LayoutParams.WRAP_CONTENT); 

     params.bottomMargin = theprice; 
     this.thecost = theprice; 

     launchPayPalButton.setLayoutParams(params); 
     launchPayPalButton.setOnClickListener(this); 

     ((LinearLayout)findViewById(R.id.main_layout2)).addView(launchPayPalButton); 
    } 

    public void onClick(View v) { 
     payWithPaypal(this.thecost); 
    } 


private void payWithPaypal(Integer gg) { 
     PayPalPayment newPayment = new PayPalPayment(); 
     BigDecimal bigDecimal=new BigDecimal(gg); 
     newPayment.setSubtotal(bigDecimal); 
     newPayment.setCurrencyType(Currency.getInstance(Locale.US)); 
     newPayment.setRecipient("[email protected]"); 
     newPayment.setMerchantName("My Merchant"); 
     Intent paypalIntent = PayPal.getInstance().checkout(newPayment, this); 
     this.startActivityForResult(paypalIntent, 1); 
    } 

    @Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     super.onActivityResult(requestCode, resultCode, data); 

     switch(resultCode) { 
     case Activity.RESULT_OK: 
      String payKey = data.getStringExtra(PayPalActivity.EXTRA_PAY_KEY); 
      data.getStringExtra(PayPalActivity.EXTRA_PAY_KEY); 
      Toast.makeText(this,"Paymnet Successful",Toast.LENGTH_LONG).show(); 
      break; 
     case Activity.RESULT_CANCELED: 
      Toast.makeText(this,"Paymnet Cancel",Toast.LENGTH_LONG).show(); 
      break; 
     case PayPalActivity.RESULT_FAILURE: 
      Toast.makeText(this,"Paymnet Failed",Toast.LENGTH_LONG).show(); 
      String errorID = 
      data.getStringExtra(PayPalActivity.EXTRA_ERROR_ID); 
      String errorMessage = 
        data.getStringExtra(PayPalActivity.EXTRA_ERROR_MESSAGE); 
      break; 

     } 

編輯:我叫initUI()在onCreate方法

再次編輯:我改變全局變量以「雙」,因爲價格通常有小數位。 現在我嘗試爲價值敬酒,我發現錯誤更清晰。吐司顯示消息,傳遞的值是「0.0」。因此,「付款失敗」和無效付款出現錯誤。

int eprice; 
    double thecost;  
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.detail); 

    //Data mSource = new Data; 
    Intent myLocalIntent = getIntent(); 
    Bundle myBundle = myLocalIntent.getExtras(); 



    eprice = myBundle.getInt("eprice"); 
    String epricetxt = myBundle.getString("eprice"); 

    Adapter mAdapter = new Adapter(this, mSource); 
    //details = (Data) mAdapter.getItem(pos); 





    TextView theprice = (TextView) findViewById(R.id.priceTxt); 
    theprice.setText("Price: $" + epricetxt); 





    this.setCost(eprice); 
    this.thecost = eprice; 



    //Paypal 
    mPayPal=PayPal.initWithAppID(this,Constants.PAYPAL_APP_ID,PayPal.ENV_SANDBOX); 

    initUI(eprice); 

} 

private void initUI(int theprice) { 

     launchPayPalButton = mPayPal.getCheckoutButton(this, 
       PayPal.BUTTON_278x43, CheckoutButton.TEXT_PAY); 

     LinearLayout.LayoutParams params = new 
       LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, 
         LayoutParams.WRAP_CONTENT); 

     params.bottomMargin = theprice; 
     this.thecost = theprice; 
     launchPayPalButton.setLayoutParams(params); 
     launchPayPalButton.setOnClickListener(this); 

     ((LinearLayout)findViewById(R.id.main_layout2)).addView(launchPayPalButton); 
    } 

    public void onClick(View v) { 
     // 
     payWithPaypal(getCost()); 
    } 

    public void setCost(int cost) { 
     this.thecost = cost; 
    } 

    public double getCost() { 
     return this.thecost; 
    } 


    private void payWithPaypal(Double gg) { 
     PayPalPayment newPayment = new PayPalPayment(); 
     Toast.makeText(getApplicationContext(),gg.toString(), Toast.LENGTH_LONG).show(); 
     BigDecimal bigDecimal=new BigDecimal(gg); 
     newPayment.setSubtotal(bigDecimal); 
     newPayment.setCurrencyType(Currency.getInstance(Locale.US)); 
     newPayment.setRecipient("[email protected]"); 
     newPayment.setMerchantName("My Merchant"); 
     Intent paypalIntent = PayPal.getInstance().checkout(newPayment, this); 
     this.startActivityForResult(paypalIntent, 1); 
    } 
+0

你確定它是因爲成本而沒有成功,而沒有其他原因嗎?錯誤消息中有什麼? – kufudo 2013-02-13 02:46:49

+0

似乎沒有'thecost'字段的問題。你是否在onActivityResult()中檢查了'errorID'和'errorMessage'? – sandrstar 2013-02-13 02:47:42

+0

hmm ...我檢查但沒有錯誤。但我想知道爲什麼當我把 public void onClick(View v){ payWithPaypal(10); } 它的工作原理。但是,當我把this.thecost,它不起作用 – OneNation 2013-02-13 02:59:15

回答

0

用我最更新的代碼,我不知道爲什麼我的EPRICE不起作用。但我有其他解決方案。我需要做的是改變

initUI(EPRICE);

initUI(Double.valueOf(epricetxt));

0

我們沒有足夠的信息來告訴你哪裏出了錯。出於某種原因,PayPal API返回了失敗狀態代碼。也許你沒有互聯網連接?

檢查你在這一行中檢索到的錯誤消息字符串的值:

String errorMessage = data.getStringExtra(PayPalActivity.EXTRA_ERROR_MESSAGE); 

您可以使用調試器來檢查它,或者使用Log.e功能Logger類將其記錄到Logcat所以你可以閱讀它。

至於你的第二個問題:

順便說一下,你叫什麼私人{}私人無效{} - 所有這些功能()看的東西?

在Java中,這些 「功能尋找的東西」 被稱爲方法。

編輯:好的,現在你已經向我們展示你的onCreate方法,我能看到你得到你最終傳遞給這裏的OnInit值:

eprice = myBundle.getInt("eprice"); 

這樣做意味着你救了在onSaveInstanceState(Bundle)

你做捆綁先前價值?當您第一次啓動活動時,它如何獲得價值?

+0

嗯...編輯更多細節 – OneNation 2013-02-13 03:49:15

+0

嗨,我現在看到更清晰的錯誤。傳遞給點擊方法的值是'0.0'。我不知道是什麼導致它 – OneNation 2013-02-13 06:46:46

+0

好吧,所以你必須弄清楚從哪裏來。您在onCreate中獲得了該包的價值,但尚不清楚將其放入捆綁包的位置。我再次編輯我的答案與更多的信息。 – mattgmg1990 2013-02-13 13:45:55

相關問題