dbachelder / CreditCardEntry

Smooth UI for Credit Card Entry on Android device, regex check for supported credit card types and luhn check. Inspired by Square credit card entry interface
MIT License
503 stars 166 forks source link

java.lang.IndexOutOfBoundsException: setSpan (3 ... 3) ends beyond length 0 #9

Closed hectorprats closed 9 years ago

hectorprats commented 9 years ago
<com.devmarvel.creditcardentry.library.CreditCardForm
        android:id="@+id/credit_card_form"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:helper_text_color="@color/rosaXceed"
        app:input_background="@drawable/input_credit_card"
        app:include_helper="false"
        app:include_zip="false"
        app:include_exp="false"
        app:include_security="false"/>

And this is the code

 Form = (CreditCardForm) findViewById(R.id.credit_card_form); 
 Form.setCardNumber("4242 4242 4242 4242", false)

If I put without setCardNumber() all works. But If I put it, app crashes with this error 04-26 00:52:53.532 6585-6585/me.xceed.xceed E/AndroidRuntime﹕ FATAL EXCEPTION: main Process: me.xceed.xceed, PID: 6585 java.lang.RuntimeException: Unable to start activity ComponentInfo{me.xceed.xceed/me.xceed.xceed.AddCreditCardActivity}: java.lang.IndexOutOfBoundsException: setSpan (3 ... 3) ends beyond length 0 at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2658) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2723) at android.app.ActivityThread.access$900(ActivityThread.java:172) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1422) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:145) at android.app.ActivityThread.main(ActivityThread.java:5832) at java.lang.reflect.Method.invoke(Native Method) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1399) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1194) Caused by: java.lang.IndexOutOfBoundsException: setSpan (3 ... 3) ends beyond length 0 at android.text.SpannableStringBuilder.checkRange(SpannableStringBuilder.java:1022) at android.text.SpannableStringBuilder.setSpan(SpannableStringBuilder.java:615) at android.text.SpannableStringBuilder.setSpan(SpannableStringBuilder.java:611) at android.text.Selection.setSelection(Selection.java:123) at android.text.Selection.setSelection(Selection.java:134) at android.widget.EditText.setSelection(EditText.java:115) at com.devmarvel.creditcardentry.fields.CreditCardText.afterTextChanged(CreditCardText.java:55) at android.widget.TextView.sendAfterTextChanged(TextView.java:8615) at android.widget.TextView.setText(TextView.java:4645) at android.widget.TextView.setText(TextView.java:4489) at android.widget.EditText.setText(EditText.java:101) at android.widget.TextView.setText(TextView.java:4464) at com.devmarvel.creditcardentry.internal.CreditCardEntry.setCardNumber(CreditCardEntry.java:346) at com.devmarvel.creditcardentry.library.CreditCardForm.setCardNumber(CreditCardForm.java:211) at me.xceed.xceed.AddCreditCardActivity.onCreate(AddCreditCardActivity.java:44) at android.app.Activity.performCreate(Activity.java:6221) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1119) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2611)             at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2723)             at android.app.ActivityThread.access$900(ActivityThread.java:172)             at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1422)             at android.os.Handler.dispatchMessage(Handler.java:102)             at android.os.Looper.loop(Looper.java:145)             at android.app.ActivityThread.main(ActivityThread.java:5832)             at java.lang.reflect.Method.invoke(Native Method)             at java.lang.reflect.Method.invoke(Method.java:372)             at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1399)             at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1194)

dbachelder commented 9 years ago

now that we allow setting of arbitrary strings, I had to loosen up some behavior. please try the latest commit on master 4daae489fd71228adcd835b5f37f8a084d0a8248