2016-03-11 2 views
0

Я работаю над приложением, использующим PayPal. Мне нужно использовать MPL, в отличие от SDK, потому что мое приложение должно иметь возможность осуществлять сторонние платежи. Я следил за различными учебниками и создал код ниже. Я не получаю ошибок компилятора и ошибки журнала, но когда я запускаю его и нажимаю кнопку «Оплатить с помощью PayPal», ничего не происходит. Вместо этого я получаю ViewPostImeInputStage ACTION_DOWN, когда я нажимаю на кнопку или в любом месте на экране.onClick ничего не делает ... "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("[email protected]"); 
    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); 
} 

}

ответ

0

Вероятно потому, что вы не установили вид контента после super.oncreate() и так как вы регистрации вашей деятельности как на клик слушателя, его реагировании на щелчки из любой точки на вместо кнопки.

EDIT

Добавить на клик слушателя к кнопке, как этот

paypalButton.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View arg0) { PayPalButtonClick(arg0); } 
}); 

и удалить реализацию OnClickListener от вашей деятельности

+0

Спасибо ... У меня возникли проблемы, потому что я никогда не ставил взгляды программно; только используемые .xml-файлы. Должен ли я использовать 'setContentView (R.layout.activity_main);'? Как решить проблему onClickListener? –

+0

Похоже, что вы не создаете свой взгляд из xml, так что setContentView (linearLayout) в конце вашего showPaypalButton() должен работать. – monopandora

+0

Я изменил его: 'launchPayPalButton.setOnClickListener (новый View.OnClickListener() { @Override общественного недействительными OnClick (View arg0) { payPalButtonClick (arg0); } });' Но проблема остается. Кроме того, я установил contentView в методе showPaypalButton. –

0

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 

для получения дополнительной информации, вы можете Вана рассмотреть чтение this

+0

Спасибо, но я создаю макет программно, поэтому я не использую .xml-файлы. –

+0

Почему бы не использовать xml, если он решает вашу проблему ?? –

+0

Я не думаю, что смогу, так как я использую код кнопки из PayPal MPL. –

Смежные вопросы