如何将类中的数据传递给其他成员?
我有这样的代码,我试图通过this.thecost
到public 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);
}
用我最更新的代码,我不知道为什么我的EPRICE不起作用。但我有其他解决方案。我需要做的是改变
initUI(EPRICE);
initUI(Double.valueOf(epricetxt));
我们没有足够的信息来告诉你哪里出了错。出于某种原因,PayPal API返回了失败状态代码。也许你没有互联网连接?
检查你在这一行中检索到的错误消息字符串的值:
String errorMessage = data.getStringExtra(PayPalActivity.EXTRA_ERROR_MESSAGE);
您可以使用调试器来检查它,或者使用Log.e功能Logger类将其记录到Logcat所以你可以阅读它。
至于你的第二个问题:
顺便说一下,你叫什么私人{}私人无效{} - 所有这些功能()看的东西?
在Java中,这些 “功能寻找的东西” 被称为方法。
编辑:好的,现在你已经向我们展示你的onCreate方法,我能看到你得到你最终传递给这里的OnInit值:
eprice = myBundle.getInt("eprice");
这样做意味着你救了在onSaveInstanceState(Bundle)
你做捆绑先前价值?当您第一次启动活动时,它如何获得价值?
嗯...编辑更多细节 – OneNation 2013-02-13 03:49:15
嗨,我现在看到更清晰的错误。传递给点击方法的值是'0.0'。我不知道是什么导致它 – OneNation 2013-02-13 06:46:46
好吧,所以你必须弄清楚从哪里来。您在onCreate中获得了该包的价值,但尚不清楚将其放入捆绑包的位置。我再次编辑我的答案与更多的信息。 – mattgmg1990 2013-02-13 13:45:55
你确定它是因为成本而没有成功,而没有其他原因吗?错误消息中有什么? – kufudo 2013-02-13 02:46:49
似乎没有'thecost'字段的问题。你是否在onActivityResult()中检查了'errorID'和'errorMessage'? – sandrstar 2013-02-13 02:47:42
hmm ...我检查但没有错误。但我想知道为什么当我把 public void onClick(View v){ payWithPaypal(10); } 它的工作原理。但是,当我把this.thecost,它不起作用 – OneNation 2013-02-13 02:59:15