Ресурсы Android, преобразующие в строку предупреждение TypedValue - PullRequest
51 голосов
/ 05 февраля 2011

Хорошо, я смотрю прямо мимо чего-то здесь ..

Каждый раз, когда я нахожусь в своем приложении и меняю действия, logcat сообщает о серии предупреждений:

02-04 14:42:36.524: WARN/Resources(1832): Converting to string: TypedValue{t=0x12/d=0x0 a=2 r=0x7f08002b}
02-04 14:42:36.524: WARN/Resources(1832): Converting to string: TypedValue{t=0x12/d=0x0 a=2 r=0x7f08002c}
02-04 14:42:36.524: WARN/Resources(1832): Converting to string: TypedValue{t=0x12/d=0x0 a=2 r=0x7f08002d}

Другие приложенияне показывать такие предупреждения.Это сжатие перед выпуском / aapt?

Ответы [ 6 ]

60 голосов
/ 20 ноября 2014

Эти предупреждения появлялись только тогда, когда была включена определенная опция для разработчика .

Настройки устройства> Параметры разработчика> Отключить «Включить проверку атрибутов вида»

55 голосов
/ 05 февраля 2011

Вы используете ресурс bool, где ожидается строка.

Чтобы определить, какой ресурс используется неправильно, откройте созданный файл R.java и выполните поиск идентификаторов ресурсов в сообщении logcat:

0x7f08002b
0x7f08002c
0x7f08002d

Все три должны быть из вашего файла bool.xml («t = 0x12» в предупреждающем сообщении означает, что ресурсы TYPE_INT_BOOLEAN ).

Тогда,найдите, где эти идентификаторы ресурсов используются в вашем проекте (возможно, макет xml, но может быть где угодно) и убедитесь, что типы совпадают.

Вот пример TextView, который генерирует это сообщение журнала.Если в моем файле res / values ​​/ bool.xml у меня есть:

<resources>
    <bool name="foo_flag">false</bool>
</resources>

Я могу неправильно ссылаться на него из XML-файла макета:

<TextView android:id="@+id/foo"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:text="@bool/foo_flag"></TextView>

Когда я запускаю это приложение, яВы получите предупреждающее сообщение, так как «text» ожидает строковый ресурс, а не bool (хотя мое приложение выглядит так, как ожидалось, поскольку флаг преобразуется в строку «false»).

3 голосов
/ 19 октября 2012

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

Например:

<plurals name="song_count">
    <item quantity="one">%d song in playlist</item>
    <item quantity="other">%d songs in playlist</item>
</plurals>

Предупреждение появится при надувании действия, которое содержит виджет, ссылающийся на него:

<TextView
    android:id="@+id/tv_total_songs"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@plurals/song_count" />

Вы, без сомнения, заменяете строку после надувания представлений для установки правильных параметров, например ::

playlistSongCount.setText(
        getResources().getQuantityString(
            R.plurals.song_count,
            songCount,
            songCount));

Очевидным решением здесь является удаление атрибута android:text из макета, поскольку он не имеет смысла.

2 голосов
/ 15 июля 2014

Проверьте, нет ли у вас: -

<TextView android:text="@+id/labelText"/>

в вашем файле ресурсов.

0 голосов
/ 24 апреля 2019

В моем случае проблема была в ListPreference значении по умолчанию. Даже если вы введете его как String (например, "10"), оно будет интерпретировано как int, а затем преобразовано в String и, таким образом, будет жаловаться

Например, это выдаст предупреждение:

<ListPreference
     android:defaultValue="10"
     ...
/>

но это не будет:

<ListPreference
     android:defaultValue="@string/ten"
     ...
/>

и определите @string/ten в strings.xml как:

<string name="ten" translatable="false">10</string>

Тупой, но он избавляется от предупреждения.

0 голосов
/ 11 августа 2014

Проблема в android:text="@+id/fooText

Попробуйте изменить в своем .xml это:

<TextView 
    android:id="@+id/foo" 
    android:text="@+id/fooText"/>

На это:

<TextView 
    android:id="@+id/foo" 
    android:text=""/>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...