PaymentKit-Droid icon indicating copy to clipboard operation
PaymentKit-Droid copied to clipboard

java.lang.NumberFormatException

Open EKami opened this issue 10 years ago • 0 comments

Hello, I sometimes get an java.lang.NumberFormatException. Here is the complete stacktrace:

10-22 01:49:40.867  16136-16136/com.heetch.debug E/AndroidRuntime﹕ FATAL EXCEPTION: main
    java.lang.NumberFormatException: Invalid long: ""
            at java.lang.Long.invalidLong(Long.java:125)
            at java.lang.Long.parseLong(Long.java:346)
            at java.lang.Long.parseLong(Long.java:319)
            at com.paymentkit.views.FieldHolder.validateCard(FieldHolder.java:156)
            at com.paymentkit.views.FieldHolder.access$100(FieldHolder.java:26)
            at com.paymentkit.views.FieldHolder$2.onCardNumberInputComplete(FieldHolder.java:237)
            at com.paymentkit.views.CardNumEditText$ZanyInputConnection.handleNextPress(CardNumEditText.java:219)
            at com.paymentkit.views.CardNumEditText$ZanyInputConnection.performEditorAction(CardNumEditText.java:212)
            at com.android.internal.view.IInputConnectionWrapper.executeMessage(IInputConnectionWrapper.java:297)
            at com.android.internal.view.IInputConnectionWrapper$MyHandler.handleMessage(IInputConnectionWrapper.java:77)
            at android.os.Handler.dispatchMessage(Handler.java:99)
            at android.os.Looper.loop(Looper.java:137)
            at android.app.ActivityThread.main(ActivityThread.java:5419)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:525)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1187)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1003)
            at dalvik.system.NativeStart.main(Native Method)

It happen when I hit the "next" button of my soft keyboard when the FieldHolder is empty. Here is a possible patch for the method throwing that exception:

    private void validateCard() {
        String cardNumberText = mCardHolder.getCardField().getText().toString();

        if (cardNumberText.equals(""))
            return;
        long cardNumber = Long.parseLong(cardNumberText.replaceAll("\\s", ""));
        if (ValidateCreditCard.isValid(cardNumber)) {
            CardType cardType = ValidateCreditCard.matchCardType(cardNumber);
            mCardIcon.setCardType(cardType);
            transitionToExtraFields();
        } else {
            mCardHolder.indicateInvalidCardNum();
        }
    }

at line 155 of FieldHolder.java. Could you patch this? Thank you.

EKami avatar Oct 22 '14 00:10 EKami