studio recursos getresources array archivo android resources

recursos - resources en android



Recursos de Android que se convierten a la advertencia de cadena TypedValue (5)

Ok, estoy buscando algo aquí ...

Cada vez que estoy en mi aplicación y cambio de actividades, Logcat informa series de advertencias:

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}

Otras aplicaciones no muestran esas advertencias. ¿Es esto una cosa de compresión pre-lanzamiento / aapt?


Descubrí que esta advertencia también se genera al especificar una cadena de plurales desde un widget que requiere parámetros.

Por ejemplo:

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

La advertencia aparecerá cuando se infla una actividad que contiene un widget que hace referencia a ella:

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

Sin duda, debe reemplazar la cadena después de inflar las vistas para establecer los parámetros correctos, por ejemplo:

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

La solución obvia aquí es eliminar el atributo android:text del diseño ya que no tiene ningún propósito.


Está utilizando un recurso bool donde se espera una cadena.

Puede encontrar qué recurso se está utilizando incorrectamente al abrir el archivo R.java generado y buscar los ID de recursos del mensaje de logcat:

0x7f08002b 0x7f08002c 0x7f08002d

Los tres deben ser de su archivo bool.xml (la "t = 0x12" en el mensaje de advertencia significa que los recursos son TYPE_INT_BOOLEAN ).

Luego, encuentre dónde se están utilizando esos ID de recursos en su proyecto (probablemente un diseño xml, pero podría estar en cualquier lugar) y asegúrese de que los tipos coincidan.

Aquí hay un ejemplo de una vista de texto que generaría ese mensaje de registro. Si en mi res / values ​​/ bool.xml tengo:

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

Puedo consultarlo incorrectamente desde un archivo XML de diseño:

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

Cuando ejecuto esa aplicación, obtengo el mensaje de advertencia ya que "texto" espera un recurso de cadena, no un bool (mi aplicación aparece como se esperaba aunque la bandera se convierte en la cadena "falsa").


Estas advertencias solo se producen cuando se habilita una determinada opción de desarrollador .

Configuración del dispositivo> Opciones de desarrollador> Deshabilitar ''Habilitar inspección de atributo de vista''


Problema en android:text="@+id/fooText

Intente cambiar en su .xml esto:

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

A esto:

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


Verifica si no tienes:

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

en tu archivo de recursos.