Проблема XML-Рендеринга Android Studio — Строковый Индекс Вне Диапазона:-1

#java #android-studio #android-layout #android-studio-4.2

Вопрос:

Когда я добавлял android:autoFillHints="" атрибут в XML-код действия, экран дизайна внезапно начал выдавать ошибку.

Во-первых, макет действия, который я редактировал, ничего не показывал на экране дизайна, и была ошибка только в макете действия, который я редактировал. Затем я попытался решить, есть ли мои шаги, которые не сработали (больше ничего не сработало).:

  1. Я меняю версию API на 29 и 28 с 30. Это не сработало.
  2. Я переписываю весь XML-код в макете действий, который я отредактировал. Это не сработало.

Я ищу в Google и складываю поверх потока, но не увидел никакого решения. Ответы были о JavaFX или чистом коде java, в котором строковый индекс находится вне диапазона.

После этого я решил отредактировать другие макеты действий, и когда я редактировал другие макеты действий, начали появляться ошибки.

XML — файл, который я получаю, является ошибкой:

 <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".noteDetails"
    android:paddingHorizontal="20dp"
    android:orientation="vertical">

    <androidx.constraintlayout.widget.ConstraintLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="20dp"
        android:layout_marginBottom="20dp">

        <TextView
            android:id="@ id/textView3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:fontFamily="@font/ubuntubold"
            android:text="@string/note_details"
            android:textColor="@color/yellow"
            android:textSize="25sp"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintTop_toTopOf="parent"
            tools:ignore="MissingConstraints" />

        <ImageButton
            android:id="@ id/saveNoteButton"
            android:layout_width="30dp"
            android:layout_height="30dp"
            android:background="@drawable/ic_save_note_changes"
            android:visibility="gone"
            android:backgroundTint="@color/green"
            android:layout_marginEnd="20dp"
            app:layout_constraintEnd_toStartOf="@id/deleteNoteButton"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintBottom_toBottomOf="parent"
            android:contentDescription="@string/save_updates_button" />

        <ImageButton
            android:id="@ id/editNoteButton"
            android:layout_width="30dp"
            android:layout_height="30dp"
            android:background="@drawable/ic_edit_note"
            android:backgroundTint="@color/blue"
            android:layout_marginEnd="20dp"
            app:layout_constraintEnd_toStartOf="@id/deleteNoteButton"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintBottom_toBottomOf="parent"
            android:contentDescription="@string/edit_note_button" />

        <ImageButton
            android:id="@ id/deleteNoteButton"
            android:layout_width="30dp"
            android:layout_height="30dp"
            android:background="@drawable/ic_delete_note"
            android:backgroundTint="@color/pink"
            app:layout_constraintEnd_toStartOf="@ id/goBackButton"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintBottom_toBottomOf="parent"
            android:layout_marginEnd="20dp"
            android:contentDescription="@string/delete_note_button" />

        <ImageButton
            android:id="@ id/goBackButton"
            android:layout_width="30dp"
            android:layout_height="30dp"
            android:background="@drawable/ic_go_back"
            android:backgroundTint="@color/darkblue"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintTop_toTopOf="parent"
            android:contentDescription="@string/go_to_main_menu_button" />

    </androidx.constraintlayout.widget.ConstraintLayout>

    <View
        android:layout_width="wrap_content"
        android:layout_height="10dp"
        android:background="@drawable/horizontal_line"/>

    <LinearLayout
        android:id="@ id/editNoteLinearLayout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:layout_marginVertical="20dp"
        android:padding="8dp"
        android:background="@drawable/ic_note_detailed_text_frame">
        
        <androidx.constraintlayout.widget.ConstraintLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="10dp"
            android:layout_marginBottom="10dp">

            <EditText
                android:id="@ id/noteTitleDetailed"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:fontFamily="@font/ubunturegular"
                android:textStyle="bold"
                android:hint="@string/note_title"
                android:background="@null"
                android:inputType="text"
                android:textSize="20sp"
                android:textColor="@color/darkblue"
                android:maxLength="30"
                app:layout_constraintStart_toStartOf="parent"
                tools:ignore="MissingConstraints"
                android:autofillHints="" />

            <View
                android:layout_width="100dp"
                android:layout_height="3dp"
                android:layout_gravity="start"
                android:layout_marginTop="5dp"
                android:background="@drawable/ic_note_title_and_text_divider"
                app:layout_constraintTop_toBottomOf="@id/noteTitleDetailed"
                app:layout_constraintBottom_toBottomOf="parent"
                tools:ignore="MissingConstraints" />

            <TextView
                android:id="@ id/noteDateDetailed"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:fontFamily="@font/ubuntulight"
                android:textSize="12sp"
                android:layout_marginTop="5dp"
                android:text="@string/example_date"
                app:layout_constraintBottom_toBottomOf="parent"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintTop_toBottomOf="@id/noteTitleDetailed"/>

        </androidx.constraintlayout.widget.ConstraintLayout>

        <EditText
            android:id="@ id/noteTextDetailed"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:inputType="text"
            android:fontFamily="@font/ubunturegular"
            android:textSize="16sp"
            android:textColor="@color/darkblue"
            android:hint="@string/note_content"
            android:lines="10"
            android:ems="10"
            android:maxLength="500"
            android:background="@null"
            tools:ignore="MissingConstraints"
            android:layout_marginBottom="10dp"
            android:autofillHints="" />
        
    </LinearLayout>
</LinearLayout>
 

Я управляю кодом снова и снова, и я не заметил никаких проблем с XML-кодом. И когда я компилирую код, программа запускается без проблем.

Коды ошибок и изображения являются:

Отрисовка Кода Ошибки Проблемы:

 java.lang.reflect.InvocationTargetException
    at jdk.internal.reflect.GeneratedMethodAccessor953.invoke(Unknown Source)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:566)
    at android.view.BridgeInflater.lambda$createViewFromCustomInflater$0(BridgeInflater.java:259)
    at android.view.BridgeInflater.createViewFromCustomInflater(BridgeInflater.java:285)
    at android.view.BridgeInflater.onCreateView(BridgeInflater.java:122)
    at android.view.LayoutInflater.onCreateView(LayoutInflater.java:928)
    at android.view.LayoutInflater.onCreateView(LayoutInflater.java:948)
    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:1002)
    at android.view.BridgeInflater.createViewFromTag(BridgeInflater.java:309)
    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:959)
    at android.view.LayoutInflater.rInflate_Original(LayoutInflater.java:1121)
    at android.view.LayoutInflater_Delegate.rInflate(LayoutInflater_Delegate.java:72)
    at android.view.LayoutInflater.rInflate(LayoutInflater.java:1095)
    at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:1082)
    at android.view.LayoutInflater.rInflate_Original(LayoutInflater.java:1124)
    at android.view.LayoutInflater_Delegate.rInflate(LayoutInflater_Delegate.java:72)
    at android.view.LayoutInflater.rInflate(LayoutInflater.java:1095)
    at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:1082)
    at android.view.LayoutInflater.rInflate_Original(LayoutInflater.java:1124)
    at android.view.LayoutInflater_Delegate.rInflate(LayoutInflater_Delegate.java:72)
    at android.view.LayoutInflater.rInflate(LayoutInflater.java:1095)
    at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:1082)
    at android.view.LayoutInflater.inflate(LayoutInflater.java:680)
    at android.view.LayoutInflater.inflate(LayoutInflater.java:499)
    at com.android.layoutlib.bridge.impl.RenderSessionImpl.inflate(RenderSessionImpl.java:354)
    at com.android.layoutlib.bridge.Bridge.createSession(Bridge.java:431)
    at com.android.tools.idea.layoutlib.LayoutLibrary.createSession(LayoutLibrary.java:141)
    at com.android.tools.idea.rendering.RenderTask.createRenderSession(RenderTask.java:710)
    at com.android.tools.idea.rendering.RenderTask.lambda$inflate$6(RenderTask.java:865)
    at com.android.tools.idea.rendering.RenderExecutor$runAsyncActionWithTimeout$2.run(RenderExecutor.kt:174)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
    at java.base/java.lang.Thread.run(Thread.java:834)
Caused by: java.lang.StringIndexOutOfBoundsException: String index out of range: -1
    at java.base/java.lang.StringLatin1.charAt(StringLatin1.java:47)
    at java.base/java.lang.String.charAt(String.java:693)
    at android.content.res.BridgeTypedArray.getType(BridgeTypedArray.java:1024)
    at android.content.res.BridgeTypedArray.getType(BridgeTypedArray.java:809)
    at android.content.res.BridgeTypedArray.getValue(BridgeTypedArray.java:778)
    at android.content.res.BridgeTypedArray.peekValue(BridgeTypedArray.java:847)
    at android.view.View.<init>(View.java:5951)
    at android.widget.TextView.<init>(TextView.java:996)
    at android.widget.EditText.<init>(EditText.java:87)
    at android.widget.EditText.<init>(EditText.java:83)
    at androidx.appcompat.widget.AppCompatEditText.<init>(AppCompatEditText.java:93)
    at androidx.appcompat.widget.AppCompatEditText.<init>(AppCompatEditText.java:88)
    at androidx.appcompat.app.AppCompatViewInflater.createEditText(AppCompatViewInflater.java:209)
    at androidx.appcompat.app.AppCompatViewInflater.createView(AppCompatViewInflater.java:127)
    ... 34 more
 

Визуализация Изображения С Ошибкой Проблемы:
Визуализация Изображения С Ошибкой Проблемы

Код Ошибки Трассировки Стека:

 java.lang.StringIndexOutOfBoundsException: String index out of range: -1
    at java.base/java.lang.StringLatin1.charAt(StringLatin1.java:47)
    at java.base/java.lang.String.charAt(String.java:693)
    at android.content.res.BridgeTypedArray.getType(BridgeTypedArray.java:1024)
    at android.content.res.BridgeTypedArray.getType(BridgeTypedArray.java:809)
    at android.content.res.BridgeTypedArray.getValue(BridgeTypedArray.java:778)
    at android.content.res.BridgeTypedArray.peekValue(BridgeTypedArray.java:847)
    at android.view.View.<init>(View.java:5951)
    at android.view.ViewGroup.<init>(ViewGroup.java:697)
    at android.widget.FrameLayout.<init>(FrameLayout.java:99)
    at com.android.layoutlib.bridge.MockView.<init>(MockView.java:55)
    at com.android.layoutlib.bridge.MockView.<init>(MockView.java:51)
    at com.android.layoutlib.bridge.MockView.<init>(MockView.java:47)
    at android.view.BridgeInflater.createViewFromTag(BridgeInflater.java:324)
    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:959)
    at android.view.LayoutInflater.rInflate_Original(LayoutInflater.java:1121)
    at android.view.LayoutInflater_Delegate.rInflate(LayoutInflater_Delegate.java:72)
    at android.view.LayoutInflater.rInflate(LayoutInflater.java:1095)
    at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:1082)
    at android.view.LayoutInflater.rInflate_Original(LayoutInflater.java:1124)
    at android.view.LayoutInflater_Delegate.rInflate(LayoutInflater_Delegate.java:72)
    at android.view.LayoutInflater.rInflate(LayoutInflater.java:1095)
    at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:1082)
    at android.view.LayoutInflater.rInflate_Original(LayoutInflater.java:1124)
    at android.view.LayoutInflater_Delegate.rInflate(LayoutInflater_Delegate.java:72)
    at android.view.LayoutInflater.rInflate(LayoutInflater.java:1095)
    at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:1082)
    at android.view.LayoutInflater.inflate(LayoutInflater.java:680)
    at android.view.LayoutInflater.inflate(LayoutInflater.java:499)
    at com.android.layoutlib.bridge.impl.RenderSessionImpl.inflate(RenderSessionImpl.java:354)
    at com.android.layoutlib.bridge.Bridge.createSession(Bridge.java:431)
    at com.android.tools.idea.layoutlib.LayoutLibrary.createSession(LayoutLibrary.java:141)
    at com.android.tools.idea.rendering.RenderTask.createRenderSession(RenderTask.java:710)
    at com.android.tools.idea.rendering.RenderTask.lambda$inflate$6(RenderTask.java:865)
    at com.android.tools.idea.rendering.RenderExecutor$runAsyncActionWithTimeout$2.run(RenderExecutor.kt:174)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
    at java.base/java.lang.Thread.run(Thread.java:834)
 

Образ Ошибки Трассировки Стека:
Образ Ошибки Трассировки Стека

Если что-то пропало, дайте мне знать, и я сразу же добавлю это. С этого момента спасибо тебе.

Ответ №1:

Ответ прост, просто удалите всю android:autofillHints="" строку <EditText/> . И XML-рендеринг снова работает.

Комментарии:

1. Большое вам спасибо, это и есть решение! Но в чем причина этого изменения? Сообщение об ошибке для этого непонятно.

2. Я искал об этом, но ничего об этом не нашел.

Ответ №2:

Просто добавьте любое значение в Android:автозаполнение=»» вместо пустого

 android:autofillHints=""
 

Для

 android:autofillHints="your hint here"
 

Комментарии:

1. Спасибо, я проверю это и скоро отвечу.