Miałem tego rodzaju problem zgodnie z raportami analitycznymi. Te same kłopoty - nie ma urządzenia Huawei.
Miało to zdarzyć na danej liście urządzeń: - 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)
Przyjrzałem się klasie Resources, aby wyjaśnić problem i znaleźć WORKAROUND.
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)));
}
Według tego kodu, jeśli reguła mnoga nie znajduje się na podanej ilości, liczba mnoga z zasadą „INNE” zostaną podane (przed mamy Exception). Dodałem "inny" element (regułę) do definicji liczby mnogiej w pliku strings.xml. Wykonałem aktualizację aplikacji i od tej pory nie otrzymałem żadnego raportu z tej listy urządzeń z tym rodzajem wyjątku.
W moim przypadku było to w rosyjskiej lokalizacji:
<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>
To nie jest panaceum, ale działa przynajmniej obejścia.
Szczęśliwe kodowanie ...
Mam podobny raport o awariach z Nexusa 7 z systemem ** Android 5 **. Może jest to związane z nową wersją Androida? – Czechnology
@Cechnologia nope, pojawiła się również na Androidzie 4. +. – makovkastar
Znaleziono jakieś rozwiązanie? Nie mogę odtworzyć tego problemu na żadnym urządzeniu lub emulatorze. – Czechnology