VicMikhailau / MaskedEditText

It allows you to add a mask to EditText
Apache License 2.0
284 stars 50 forks source link

Can't use with TextInputLayout #16

Closed ChathuragaShan closed 4 years ago

ChathuragaShan commented 6 years ago

First of all great library. I have used in many of my projects without a issue.

Recently I try to use your library inside TextInputLayout like below.

<android.support.design.widget.TextInputLayout
        android:id="@+id/card_input_layout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:errorEnabled="true"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent">

        <com.vicmikhailau.maskededittext.MaskedEditText
            android:id="@+id/card_number_edit_text"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="Card Number"
            android:inputType="number"
            android:textSize="16sp"
            app:mask="#### #### ####"
            />

    </android.support.design.widget.TextInputLayout>

And I got StackOverflowError. here's the full error message.

11-26 17:24:22.900 12772-12772/com.shan.chathuranga.cardscannertest D/Error: ERR: exClass=java.lang.StackOverflowError
11-26 17:24:22.900 12772-12772/com.shan.chathuranga.cardscannertest D/Error: ERR: exMsg=stack size 8MB
11-26 17:24:22.900 12772-12772/com.shan.chathuranga.cardscannertest D/Error: ERR: file=Mask.java
11-26 17:24:22.900 12772-12772/com.shan.chathuranga.cardscannertest D/Error: ERR: class=com.vicmikhailau.maskededittext.Mask
11-26 17:24:22.900 12772-12772/com.shan.chathuranga.cardscannertest D/Error: ERR: method=isValidPrepopulateCharacter line=39
11-26 17:24:22.939 12772-12772/com.shan.chathuranga.cardscannertest D/Error: ERR: stack=java.lang.StackOverflowError: stack size 8MB
                                                                                 at com.vicmikhailau.maskededittext.Mask.isValidPrepopulateCharacter(Mask.java:39)
                                                                                 at com.vicmikhailau.maskededittext.FormattedString.buildRawString(IFormattedString.java:70)
                                                                                 at com.vicmikhailau.maskededittext.AbstractFormattedString.<init>(IFormattedString.java:19)
                                                                                 at com.vicmikhailau.maskededittext.FormattedString.<init>(IFormattedString.java:62)
                                                                                 at com.vicmikhailau.maskededittext.Mask.getFormattedString(Mask.java:70)
                                                                                 at com.vicmikhailau.maskededittext.MaskedFormatter.formatString(MaskedFormatter.java:34)
                                                                                 at com.vicmikhailau.maskededittext.MaskedWatcher.afterTextChanged(MaskedWatcher.java:45)
                                                                                 at android.widget.TextView.sendAfterTextChanged(TextView.java:8009)
                                                                                 at android.widget.TextView$ChangeWatcher.afterTextChanged(TextView.java:10174)
                                                                                 at android.text.SpannableStringBuilder.sendAfterTextChanged(SpannableStringBuilder.java:1043)
                                                                                 at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:560)
                                                                                 at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:492)
                                                                                 at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:34)
                                                                                 at com.vicmikhailau.maskededittext.MaskedWatcher.afterTextChanged(MaskedWatcher.java:48)
                                                                                 at android.widget.TextView.sendAfterTextChanged(TextView.java:8009)
                                                                                 at android.widget.TextView$ChangeWatcher.afterTextChanged(TextView.java:10174)
                                                                                 at android.text.SpannableStringBuilder.sendAfterTextChanged(SpannableStringBuilder.java:1043)
                                                                                 at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:560)
                                                                                 at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:492)
                                                                                 at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:34)
                                                                                 at com.vicmikhailau.maskededittext.MaskedWatcher.afterTextChanged(MaskedWatcher.java:48)
                                                                                 at android.widget.TextView.sendAfterTextChanged(TextView.java:8009)
                                                                                 at android.widget.TextView$ChangeWatcher.afterTextChanged(TextView.java:10174)
                                                                                 at android.text.SpannableStringBuilder.sendAfterTextChanged(SpannableStringBuilder.java:1043)
                                                                                 at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:560)
                                                                                 at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:492)
                                                                                 at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:34)
                                                                                 at com.vicmikhailau.maskededittext.MaskedWatcher.afterTextChanged(MaskedWatcher.java:48)
                                                                                 at android.widget.TextView.sendAfterTextChanged(TextView.java:8009)
                                                                                 at android.widget.TextView$ChangeWatcher.afterTextChanged(TextView.java:10174)
                                                                                 at android.text.SpannableStringBuilder.sendAfterTextChanged(SpannableStringBuilder.java:1043)
                                                                                 at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:560)
                                                                                 at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:492)
                                                                                 at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:34)
                                                                                 at com.vicmikhailau.maskededittext.MaskedWatcher.afterTextChanged(MaskedWatcher.java:48)
                                                                                 at android.widget.TextView.sendAfterTextChanged(TextView.java:8009)
                                                                                 at android.widget.TextView$ChangeWatcher.afterTextChanged(TextView.java:10174)
                                                                                 at android.text.SpannableStringBuilder.sendAfterTextChanged(SpannableStringBuilder.java:1043)
                                                                                 at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:560)
                                                                                 at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:492)
                                                                                 at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:34)
                                                                                 at com.vicmikhailau.maskededittext.MaskedWatcher.afterTextChanged(MaskedWatcher.java:48)
                                                                                 at android.widget.TextView.sendAfterTextChanged(TextView.java:8009)
                                                                                 at android.widget.TextView$ChangeWatcher.afterTextChanged(TextView.java:10174)
                                                                                 at android.text.SpannableStringBuilder.sendAfterTextChanged(SpannableStringBuilder.java:1043)
                                                                                 at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:560)
                                                                                 at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:492)
                                                                                 at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:34)
                                                                                at com.vicmikhailau.maskededittext.Ma 

Please look into this. Thank you.

VicMikhailau commented 6 years ago

Hello, ChathuragaShan . Thank you for your feedback!

I can't reproduce this bug. You use last version of library?

VicMikhailau commented 6 years ago

img_text_input_layout