util log hacer como app android resources android-logcat

android - hacer - logcat apk



Cómo identificar dónde el código es incorrecto, si recibo una advertencia Convertir a cadena: TypedValue? (3)

El TypedValue que obtienes de logcat se puede interpretar de esta manera:

  • t ==> tipo ( 0x10 = TYPE_INT_DEC )
  • d ==> los datos reales (para ser interpretados como se especifica por t )
  • a ==> Información adicional sobre el origen del valor; solo configurado para cadenas.
  • r ==> eventual id de recurso (no establecido si pasaste un valor literal)

Así que supongo que debes buscar enteros que colocas donde esperaban las cadenas.

Aquí está el extracto de LogCat:

04-04 19:51:51.270: INFO/ActivityManager(57): Starting activity: Intent { cmp=com.example.app/.Preferences } 04-04 19:51:51.710: WARN/Resources(1081): Converting to string: TypedValue{t=0x10/d=0x0 a=-1} 04-04 19:51:51.740: WARN/Resources(1081): Converting to string: TypedValue{t=0x10/d=0x0 a=-1} 04-04 19:51:51.761: WARN/Resources(1081): Converting to string: TypedValue{t=0x10/d=0x79e a=-1} 04-04 19:51:51.800: WARN/Resources(1081): Converting to string: TypedValue{t=0x10/d=0x5a0 a=-1} 04-04 19:51:51.810: WARN/Resources(1081): Converting to string: TypedValue{t=0x10/d=0x5 a=-1} 04-04 19:51:51.830: WARN/Resources(1081): Converting to string: TypedValue{t=0x10/d=0xa a=-1} 04-04 19:51:51.840: WARN/Resources(1081): Converting to string: TypedValue{t=0x10/d=0xa a=-1} 04-04 19:51:51.860: WARN/Resources(1081): Converting to string: TypedValue{t=0x10/d=0x1e a=-1} 04-04 19:51:51.870: WARN/Resources(1081): Converting to string: TypedValue{t=0x10/d=0x1e a=-1} 04-04 19:51:53.450: INFO/ActivityManager(57): Displayed activity com.example.app/.Preferences: 2061 ms (total 2061 ms)


Este problema me estaba molestando también; Descubrí que las advertencias de logcat provienen de android:defaultValue , no de las entradas de <item> en la matriz. Puede resolver estos mensajes creando entradas de cadenas en un archivo xml (yo uso /xml/constants.xml, pero la convención de nomenclatura depende de usted y no importa) de la siguiente manera:

<resources> <string name="someValueA">12345</string> <string name="someValueB">0</string> <string name="someValueC">6789</string> </resources>

Aunque esos valores son enteros, ya que los declaras como cadenas, Android los considera cadenas para que no se genere ninguna advertencia de logcat.

En su código, haga referencia a @string/someValueA o R.string.someValueA (o B, o C, etc.) según corresponda, donde sea que necesite poner esos valores. En el caso de una ListPreference en un archivo xml, usaría algo como esto:

<ListPreference android:defaultValue="@string/someValueA" android:dialogTitle="Some dialog title" android:entries="@array/someNamesA" android:entryValues="@array/someValuesA" android:key="some_preference" android:summary="Your summary text" android:title="Some Title" />

Una vez que encuentre las entradas que están causando el problema, no es terrible resolverlo. La conversión de los valores "d" en los mensajes de logcat de hexadecimal a decimal debe apuntar en la dirección correcta. Por ejemplo, 0x5a0 es 1440, por lo que debería poder identificar dónde utilizó el valor 1440 en su código.


Tuve este problema cuando habilité la opción "Habilitar la inspección de atributos de vista" dentro de:

Settings > Developer Options > Debugging

Una vez que apagué esa configuración, el dispositivo dejó de enviar correo no deseado con estas advertencias.