2011-08-29 82 views
2

我是新的Android编程,尤其是PayPal。我得到的的任务是解决应用程序 - 尽管是新到Android,崩溃在这一行:initWithAppID命令崩溃

initWithAppID(this.getBaseContext(), appID, PayPal.ENV_SANDBOX);

首先,PayPal.ENV_SANDBOX总是返回一个0,这我不知道,如果它的猜想。其次,它为什么总是在那里崩溃?我在网上搜索的原因,人们说,因为它没有完全初始化这就是为什么它的失败。现在我想知道如果我不能初始化这个库,我需要做什么?

我使用Eclipse IDE,在三星Galaxy Tab的Android 2.2

回答

1

不知道这是否会帮助,但我这是怎么固定它在创建按钮时PayPal.ENV_NONE测试(从https://github.com/phonegap/phonegap-plugins/blob/master/Android/PayPalPlugin/src/com/phonegap/plugin/mpl.java

PayPal pp = PayPal.getInstance(); 
if (pp == null) { 
    try { 
     pp = PayPal.initWithAppID(getApplicationContext(), "", PayPal.ENV_NONE); 
    } catch (IllegalStateException e) { 
     throw new RuntimeException(e); 
    } 
    pp.setShippingEnabled(false); 
} 

然后:

PayPal pp = PayPal.getInstance(); 
CheckoutButton cb = pp.getCheckoutButton(
     getBaseContext(), 
     PayPal.BUTTON_194x37, 
     CheckoutButton.TEXT_PAY); 
cb.setOnClickListener(new OnClickListener() { 
    PayPalPayment payment = new PayPalPayment(); 
    // set subtotal etc ... 
    Intent i = PayPal.getInstance().checkout(payment,getApplicationContext()); 
    startActivityForResult(i, 1); 
}); 

希望这有助于不知何故

+0

谢谢,我将看到如何以及在哪里在代码中实现这些语句并查看它是否有效。或者我可以使用'PayPal.initWithAppID(getApplicationContext(),“”,PayPal.ENV_NONE);'而不是? –

+0

最上面的代码应该初始化为ENV_NONE。这是最简单的情况下工作。当这个工作返回到试图让ENV_SANDBOX工作。日志在崩溃时说什么? – Dre

+0

有关空指针的东西,很难用这种方法查明问题。但是当我在运行时进行调试时,它在该线上坠毁... –

0

里,可以指定有关该方法的详细信息测试?这是一个贝宝图书馆的方法? 我认为PayPal.ENV_SANDBOX是你必须设置的一些环境变量。该名称表明,此设置用于测试目的或开发(实际上不进行任何付款)。 我想你可能会在库文档中找到更多关于此方法的信息。 第二个问题是,你使用了正确的appId吗?基础上下文是否使用正确的上下文?也许你必须使用getApplicationContext,请参阅herehere

+0

大写字母显示ENV_SANDBOX是PayPal类的一个常量,它不应该被设置,甚至不能被设置。所以它每次都是按设计返回0,显然这是它的常数。很明显,PayPal类中会有更多的ENV_ *常量可以传递给initWithAppID。 –

+0

是的。但我不知道PayPal库。可能有更多的1库提供完全相同的API。一个用于产品,另一个用于PayPal.ENV_SANDBOX开发,告诉您使用哪一个。再次,我现在不是这个常数的真正意义,但我想贝宝有它的文档。 – Jordi

+0

相同的库用于所有ENV_ *类型。 当您通过ENV_SANDBOX时,PayPal将在其Sandbox服务器上执行所有操作(用于测试)。 当您的应用准备好投入使用时,您可以通过ENV_LIVE。 在这种情况下,库将在内部执行所有操作(模拟网络消息),您也可以传递ENV_NONE。他们是Sandbox的一个App ID(APP-80W284485P51943T)。您打算初始化一次,然后通过PayPal.getInstance()检索它。我遇到了同样的问题,只是想我会添加额外的东西 – Dre