Plural NotFoundException sólo en los teléfonos Huawei
He notado muchos informes de fallo de mi aplicación en la producción de teléfonos Huawei relacionados exactamente con el manejo de plurales. No hay otros teléfonos tienen este problema, pero sólo Huawei.
Todas las formas plurales existen y funcionan bien en otros dispositivos.
- Obtención de recursos de otra aplicación
- Organización de recursos para un proyecto de Android en varios paquetes
- ¿Cómo obtener los calificadores para un recurso dado (al usarlo)?
- ¿El directorio elaborable de Android puede contener subdirectorios?
- Recursos de cadenas dinámicas de Android
Parece que Huawei no puede manejar plurales en absoluto:
android.content.res.Resources$NotFoundException: Plural resource ID #0x7f060000 quantity=4 item=few at android.content.res.Resources.getQuantityText(Resources.java:290) at android.content.res.Resources.getQuantityString(Resources.java:397) ... android.content.res.Resources$NotFoundException: Plural resource ID #0x7f060000 quantity=6 item=many at android.content.res.Resources.getQuantityText(Resources.java:290) at android.content.res.XResources.getQuantityText(XResources.java:667) at android.content.res.Resources.getQuantityString(Resources.java:397) ...
¿Alguien tiene este problema también?
- ¿Es posible usar subcarpetas en drawables en Android?
- ¿Cuál es el concepto detrás de R.java?
- No se puede usar el color referenciado (por tema) en dibujable
- GetString fuera de un contexto o actividad
- Plural de cadenas de Android con nombres de identificadores separados por puntos
- Límite de almacenamiento en la carpeta de recursos y activos en android
- Método Android con prioridad (paquete) visibilidad sobreestablecimiento (no debería funcionar, pero sí, ¿por qué?)
- W / ResourceType (463): Error al obtener la entrada en el paquete 0 (error -75) en la actividad de Android
He tenido este tipo de problema de acuerdo con los informes de análisis. El mismo problema – no tiene dispositivo de Huawei.
Esto sucedió en la lista de dispositivos: – Huawei G700-U10 Ascend G700 – Huawei G700-U20 Ascend G700 – Huawei G610-U20 Ascend
Stacktrace:
android.content.res.Resources$NotFoundException: Plural resource ID #0x7f0d0000 quantity=5 item=many at android.content.res.Resources.getQuantityText(Resources.java:290) at android.content.res.Resources.getQuantityString(Resources.java:397) at com.sixthsensegames.client.android.app.activities.TournamentInfoActivity2$a$1.run(SourceFile:2233) at android.os.Handler.handleCallback(Handler.java:725) at android.os.Handler.dispatchMessage(Handler.java:92) at android.os.Looper.loop(Looper.java:153) at android.app.ActivityThread.main(ActivityThread.java:5341) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:511) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:929) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:696) at dalvik.system.NativeStart.main(Native Method)
Miré la clase de Recursos para aclarar el problema y encontrar cualquier SOLUCIÓN DE PROBLEMAS.
public CharSequence getQuantityText(@PluralsRes int id, int quantity) throws NotFoundException { NativePluralRules rule = getPluralRule(); CharSequence res = mAssets.getResourceBagText(id, attrForQuantityCode(rule.quantityForInt(quantity))); if (res != null) { return res; } res = mAssets.getResourceBagText(id, ID_OTHER); if (res != null) { return res; } throw new NotFoundException("Plural resource ID #0x" + Integer.toHexString(id) + " quantity=" + quantity + " item=" + stringForQuantityCode(rule.quantityForInt(quantity))); }
De acuerdo con este código si no se encuentra la regla plural para la cantidad dada, se dará el plural con la regla "OTRO" (antes de que tengamos la Excepción). He añadido "otro" elemento (regla) a la definición plural en strings.xml. Hecho la actualización de la aplicación y desde entonces no he recibido ningún informe de esta lista de dispositivos con este tipo de excepción.
En mi caso, estaba en idioma ruso:
<plurals name="career_tournament_goal_wins_left"> <item quantity="one">осталась %1$s победа</item> <item quantity="few">осталось %1$s победы</item> <item quantity="many">осталось %1$s побед</item> <item quantity="other">осталось %1$s побед</item> <!-- for Huawei G700-u20 --> </plurals>
No es la panacea, pero funciona al menos como solución.
Codificación feliz …
- Cómo hacer push notificación de android de php
- ¿Puedo estar seguro de que la aplicación Android terminó de ejecutarse comprobando isFinish () en OnPause () de la actividad principal?