我有几台装有Android 9的设备,有些现在有Android 10。
在装有Android 10的Samsung Galaxy S10e上,当我编辑EditText并移至下一个控件时,该应用程序将崩溃,键盘仍处于打开状态。输入文本还是将其保留为空都没关系。
在较早的版本(从4到9)上,该应用程序可以正常运行,并且还可以在其他Android 10设备(诺基亚7 plus)上运行。
我的应用崩溃时的StackTrace:
java.lang.StringIndexOutOfBoundsException: length=16; index=17
at java.lang.String.substring(String.java:2060)
at java.lang.String.subSequence(String.java:2107)
at android.widget.TextView.onProvideStructure(TextView.java:12692)
at android.view.View.onProvideAutofillStructure(View.java:9211)
at android.view.View.dispatchProvideStructure(View.java:10092)
at android.view.View.dispatchProvideAutofillStructure(View.java:10085)
at android.view.ViewGroup.dispatchProvideAutofillStructure(ViewGroup.java:3814)
at android.view.ViewGroup.dispatchProvideAutofillStructure(ViewGroup.java:3814)
at android.app.assist.AssistStructure$WindowNode.<init>(AssistStructure.java:527)
at android.app.assist.AssistStructure.<init>(AssistStructure.java:2154)
at android.app.ActivityThread.handleRequestAssistContextExtras(ActivityThread.java:3705)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2094)
at android.os.Handler.dispatchMessage(Handler.java:107)
at android.os.Looper.loop(Looper.java:237)
at android.app.ActivityThread.main(ActivityThread.java:7762)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1047)
这是EditText的布局(永远不会调用TextChangedListener):
<android.support.design.widget.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/margin_control_large">
<EditText
android:id="@+id/editTextStreet"
style="?editTextStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:addTextChangedListener="@{viewModel.onStreetChanged}"
android:cursorVisible="true"
android:enabled="@{viewModel.newCustomer}"
android:hint="@string/hint_ebecase_street"
android:inputType="text"
android:maxLines="1"
android:singleLine="true"
android:text="@{viewModel.street}"
android:textAppearance="?android:attr/textAppearanceSmallInverse" />
</android.support.design.widget.TextInputLayout>