Hardcoded string, should use @string resource

Рейтинг: 0Ответов: 1Опубликовано: 23.05.2023

Создаю приложение по туториалу, не могу повторить действие автора: возникла ошибка при создании двух tabItem внутри TabLayout в рамках ConstraintLayout: в коде выдается следующая ошибка - Hardcoded string "Days" (or "Hours"), should use @string resource. В чем заключается проблема, и как я могу решить ее?

введите сюда описание изображения

Если кодом, то вот:

`

    <com.google.android.material.tabs.TabLayout

    android:id="@+id/tabLayout"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_marginTop="3dp"
    android:backgroundTint="@color/blueColor"
    app:layout_constraintEnd_toEndOf="@+id/cardView"
    app:layout_constraintStart_toStartOf="@+id/cardView"
    app:layout_constraintTop_toBottomOf="@+id/cardView" >

    <com.google.android.material.tabs.TabItem
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hours" />

    <com.google.android.material.tabs.TabItem
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Days" />

</com.google.android.material.tabs.TabLayout>

`

Попутно перестает высвечивать макет экрана в режиме Design, а сами tabItem не показывает в дереве компонентов

введите сюда описание изображения

Ответы

▲ 2

Это не ошибка, а предупреждение - собрать, запустить приложение и увидеть этот текст оно не помешает. Но в Андроид-приложении текст следует хранить в ресурсах (https://developer.android.com/guide/topics/resources/string-resource), для которых можно создавать альтернативы для разных языков (переводы) и конфигураций. При этом вы будете указывать идентификатор ресурса, а Андроид автоматически подставлять нужное, в зависимости от языка системы и других параметров. Вы можете в предупреждении кликнуть Extract string resource и студия вам поможет создать ресурс и заменит текст на его идентификатор.