首页 > 解决方案 > 将 CharSequence 转换为可编辑

问题描述

我正在从 getText() 中返回带有 CharSequence 的 EditText 视图的加密值。

但发生 IllegalArgumentException: Invalid offset: -1。有效范围为 [0, 49] 异常

如果我将 InputType 设置为 XML 中的数字,它就可以工作。喜欢-

<com.shubham.nbsdk.SecureEditText
    android:id="@+id/xpay_encrypt_edittext"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:hint="Enter Text to Encrypt"
    android:inputType="number"/>

但是有问题android:inputType="text"

@Nullable
    @Override
    public Editable getText() {
    CharSequence encryptedText = 
    secureSDKImpl_inner.EncryptText(PlainText.toString());
       return new Editable.Factory().newEditable(encryptedText); 
    }

日志

java.lang.IllegalArgumentException: Invalid offset: -1. Valid range is [0, 49]
    at android.text.method.WordIterator.checkOffsetIsValid(WordIterator.java:384)
    at android.text.method.WordIterator.preceding(WordIterator.java:72)
    at android.widget.SpellChecker$SpellParser.parse(SpellChecker.java:592)
    at android.widget.SpellChecker$SpellParser.parse(SpellChecker.java:517)
    at android.widget.SpellChecker.spellCheck(SpellChecker.java:257)
    at android.widget.Editor.updateSpellCheckSpans(Editor.java:702)
    at android.widget.Editor.sendOnTextChanged(Editor.java:1248)
    at android.widget.TextView.sendOnTextChanged(TextView.java:9407)
    at android.widget.TextView.handleTextChanged(TextView.java:9490)
    at android.widget.TextView$ChangeWatcher.onTextChanged(TextView.java:11948)
    at android.text.SpannableStringBuilder.sendTextChanged(SpannableStringBuilder.java:1258)
    at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:573)
    at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:504)
    at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:502)
    at android.view.inputmethod.BaseInputConnection.replaceText(BaseInputConnection.java:843)
    at android.view.inputmethod.BaseInputConnection.setComposingText(BaseInputConnection.java:616)
    at com.android.internal.view.IInputConnectionWrapper.executeMessage(IInputConnectionWrapper.java:396)
    at com.android.internal.view.IInputConnectionWrapper$MyHandler.handleMessage(IInputConnectionWrapper.java:85)
    at android.os.Handler.dispatchMessage(Handler.java:105)
    at android.os.Looper.loop(Looper.java:164)
    at android.app.ActivityThread.main(ActivityThread.java:6694)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:769)

我想我做错了什么

return new Editable.Factory().newEditable(encryptedText);

将 CharSequence 转换为 Editable 的任何其他选项

标签: javaandroid

解决方案


推荐阅读