[英]Button OnClickListener giving ViewPostImeInputStage ACTION_DOWN error
[英]onClick not doing anything… “ViewPostImeInputStage ACTION_DOWN”
我正在开发一个使用PayPal的应用程序。 与SDK相比,我需要使用MPL,因为我的应用程序需要能够实现第三方付款。 我遵循了各种教程,并在下面创建了代码。 我没有任何编译器错误,也没有日志猫错误,但是当我运行它并单击“使用PayPal进行付款”按钮时,没有任何反应。 相反,当我单击按钮或屏幕上的任何位置时,都会收到ViewPostImeInputStage ACTION_DOWN
。
我不知道为什么。 请帮忙!
public class MainActivity extends Activity implements View.OnClickListener {
private CheckoutButton launchPayPalButton;
final static public int PAYPAL_BUTTON_ID = 10001;
private double _theSubtotal;
private double _taxAmount;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
initLibrary();
showPayPalButton();
}
private void showPayPalButton() {
LinearLayout linearLayout = new LinearLayout(this);
linearLayout.setOrientation(LinearLayout.VERTICAL);
ViewGroup.LayoutParams linearLayoutParam = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
setContentView(linearLayout, linearLayoutParam);
LayoutParams lpView = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
// Generate the PayPal checkout button and save it for later use
PayPal pp = PayPal.getInstance();
launchPayPalButton = pp.getCheckoutButton(this, PayPal.BUTTON_194x37, CheckoutButton.TEXT_PAY);
// The OnClick listener for the checkout button
launchPayPalButton.setOnClickListener(this);
// Add the listener to the layout
launchPayPalButton.setLayoutParams(lpView);
launchPayPalButton.setId(PAYPAL_BUTTON_ID);
linearLayout.addView(launchPayPalButton);
}
public void PayPalButtonClick(View arg0) {
PayPalPayment newPayment = new PayPalPayment();
newPayment.setSubtotal(new BigDecimal(_theSubtotal));
newPayment.setCurrencyType("USD");
newPayment.setRecipient("my@email.com");
newPayment.setMerchantName("My Company");
Intent paypalIntent = PayPal.getInstance().checkout(newPayment, this);
this.startActivityForResult(paypalIntent, 2);
}
public void initLibrary() {
PayPal pp = PayPal.getInstance();
if (pp == null) { // Test to see if the library is already initialized
// This main initialization call takes your Context, AppID, and target server
pp = PayPal.initWithAppID(this, "APP-80W284485P519543T", PayPal.ENV_NONE);
// Required settings:
// Set the language for the library
pp.setLanguage("en_US");
// Some Optional settings:
// Sets who pays any transaction fees. Possible values are:
// FEEPAYER_SENDER, FEEPAYER_PRIMARYRECEIVER, FEEPAYER_EACHRECEIVER, and FEEPAYER_SECONDARYONLY
pp.setFeesPayer(PayPal.FEEPAYER_EACHRECEIVER);
// true = transaction requires shipping
pp.setShippingEnabled(false);
}
}
@Override
public void onClick(View arg0){
PayPalButtonClick(arg0);
}
}
可能是因为您没有在super.oncreate()之后设置内容视图,并且由于您将活动注册为on click侦听器,所以它会响应屏幕上任意位置的点击,而不仅仅是按钮。
编辑
像这样向按钮添加点击监听器
paypalButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) { PayPalButtonClick(arg0); }
});
并从您的活动中删除OnClickListener的实现
当布局被拒绝并且您不再能够单击任何可单击项时, ViewPostImeInputStage ACTION_DOWN
基本上是一个条件。此解决方案很简单,只需将布局内容与父项一起包装即可。
例如:
if you have the xml with format as:
<LinearLayout <---root layout
..... contents here
</LinearLayout> <-- root layout end
change to
<FrameLayout <---root layout
<LinearLayout <-- parent wrap start
...
<!-- your content -->
</LinearLayout> <-- parent wrap end
</FrameLayout> <-- root layout end
有关更多信息,您可以考虑阅读此内容
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.