У меня есть несколько устройств с Android 9, а некоторые сейчас с Android 10.
На Samsung Galaxy S10e с Android 10 приложение вылетает после редактирования EditText и перехода к следующий элемент управления с открытой клавиатурой . Не имеет значения, вводить ли я текст или оставить его пустым.
В более старых версиях (от 4 до 9) приложение работает просто отлично, а также на другом устройстве Android 10 (Nokia 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>