首页 > 解决方案 > 在 XML 文件的预览呈现期间抛出异常 16,并且一个字符串抛出错误“在此处翻译但不在默认语言环境中”

问题描述

我有以下 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"
        tools:context="com.ad123.oshikwanyamadictionary.EditorActivity"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        android:padding="7dp"
        app:layout_behavior="@string/appbar_scrolling_view_behavior">

        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            tools:text="term in question"
            android:textSize="20sp"
            android:paddingTop="3dp"
            android:paddingStart="3dp"
            android:paddingLeft="3dp"
            android:paddingBottom="10dp"
            android:gravity="center_horizontal"
            android:id="@+id/term_in_question"/>
        <AutoCompleteTextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:inputType="textCapSentences"
            android:hint="@string/translation_suggestion"
            android:id="@+id/suggestion_edit_text"
            />
        <Spinner
            android:paddingTop="10dp"
            android:paddingLeft="3dp"
            android:paddingStart="3dp"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"

            android:id="@+id/language_report_spinner">
        </Spinner>
        <!--android:entries="@array/sourceLanguage"
            android:entries="@array/wordType"-->
        <Spinner
            android:paddingTop="15dp"
            android:paddingLeft="3dp"
            android:paddingStart="3dp"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/word_type_spinner"
            android:visibility="gone">
        </Spinner>
        <EditText
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="10dp"
            android:inputType="textCapSentences"
            android:id="@+id/term_plural_edit_text"
            android:hint="@string/plural_of_term_contribution"
            android:visibility="gone"/>
        <EditText
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="10dp"
            android:inputType="textCapSentences"
            android:visibility="gone"
            android:id="@+id/translation_plural_edit_text"
            android:hint="@string/plural_of_translation_contribution"/>
        <EditText
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="10dp"
            android:visibility="gone"
            android:id="@+id/term_example_edit_text"
            android:hint="@string/example_using_term_contribution"/>
        <EditText
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="10dp"
            android:inputType="textCapSentences"
            android:visibility="gone"
            android:id="@+id/translation_example_edit_text"
            android:hint="@string/example_using_translation_contrinution"/>
        <EditText
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="10dp"
            android:inputType="textCapSentences"
            android:visibility="gone"
            android:id="@+id/alternative"
            android:hint="@string/alternative_edit_text"/>
        <Button
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="20dp"
            android:id="@+id/send_data"
            android:text="@string/send_data"
            android:backgroundTint="@color/Button"/>
        <ProgressBar
            android:layout_width="50dp"
            android:layout_height="50dp"
            android:layout_gravity="center_horizontal"
            android:layout_margin="5dp"
            android:visibility="gone"
            android:id="@+id/progress_bar_edit"/>

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/or_edit_choose"/>
</LinearLayout>

现在,如果我尝试预览它,它会引发以下异常:

java.lang.ArrayIndexOutOfBoundsException: 16
    at android.text.StaticLayout.generate(StaticLayout.java:854)
    at android.text.StaticLayout.<init>(StaticLayout.java:603)
    at android.text.StaticLayout.<init>(StaticLayout.java:50)
    at android.text.StaticLayout$Builder.build(StaticLayout.java:425)
    at android.widget.TextView.makeNewLayout(TextView.java:8272)
    at android.widget.TextView.assumeLayout(TextView.java:8104)
    at android.widget.TextView.onPreDraw(TextView.java:6742)
    at android.view.ViewTreeObserver.dispatchOnPreDraw(ViewTreeObserver.java:977)
    at android.view.AttachInfo_Accessor.dispatchOnPreDraw(AttachInfo_Accessor.java:46)
    at com.android.layoutlib.bridge.impl.RenderSessionImpl.renderAndBuildResult(RenderSessionImpl.java:404)
    at com.android.layoutlib.bridge.impl.RenderSessionImpl.renderAndBuildResult(RenderSessionImpl.java:543)
    at com.android.layoutlib.bridge.impl.RenderSessionImpl.render(RenderSessionImpl.java:426)
    at com.android.layoutlib.bridge.BridgeRenderSession.render(BridgeRenderSession.java:108)
    at com.android.ide.common.rendering.api.RenderSession.render(RenderSession.java:154)
    at com.android.ide.common.rendering.api.RenderSession.render(RenderSession.java:136)
    at com.android.tools.idea.rendering.RenderTask.lambda$renderInner$5(RenderTask.java:671)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)

我已经尝试清理项目并更改预览的目标 api,但似乎没有任何帮助。同时我只得到一个字符串的错误。它是最后一个 TextView 中使用的字符串:@String/or_edit_choose。虽然它被翻译成所有语言,但它仍然给我错误消息:“or_edit_choose 在这里被翻译,但不是在默认语言环境中”。问题是,错误消息在默认的 strings.xml 文件中显示给我,这应该是默认的语言环境。我不知道错误是否相关,但它们都同时出现。还有一个短暂的时刻,可以从另一个布局文件访问字符串,而不是从上面给出的那个。现在无法从任何文件访问它。

标签: androidxmlandroid-studiorender

解决方案


strings.xml添加这一行

tools:ignore="ExtraTranslation" xmlns:tools="http://schemas.android.com/tools"

<resources>标记_

像这样

<resources tools:ignore="ExtraTranslation" xmlns:tools="http://schemas.android.com/tools">

推荐阅读