mak*_*tar 5 android android-resources
我已经注意到我的应用程序在华为手机的生产中有很多崩溃报告,这些报告与复数处理完全相关.没有其他手机有这个问题,只有华为.
所有复数形式都存在并在其他设备上正常工作.
似乎华为根本无法处理复数:
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)
...
Run Code Online (Sandbox Code Playgroud)
有人也有这个问题吗?
根据分析报告,我遇到过此类问题。同样的问题 - 没有华为设备。
\n\n给定的设备列表上发生了这种情况:\n- 华为 G700-U10 Ascend G700\n- 华为 G700-U20 Ascend G700\n- 华为 G610-U20 Ascend
\n\n堆栈跟踪:
\n\nandroid.content.res.Resources$NotFoundException: Plural resource ID #0x7f0d0000 quantity=5 item=many\n at android.content.res.Resources.getQuantityText(Resources.java:290)\n at android.content.res.Resources.getQuantityString(Resources.java:397)\n at com.sixthsensegames.client.android.app.activities.TournamentInfoActivity2$a$1.run(SourceFile:2233)\n at android.os.Handler.handleCallback(Handler.java:725)\n at android.os.Handler.dispatchMessage(Handler.java:92)\n at android.os.Looper.loop(Looper.java:153)\n at android.app.ActivityThread.main(ActivityThread.java:5341)\n at java.lang.reflect.Method.invokeNative(Native Method)\n at java.lang.reflect.Method.invoke(Method.java:511)\n at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:929)\n at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:696)\n at dalvik.system.NativeStart.main(Native Method) \nRun Code Online (Sandbox Code Playgroud)\n\n我查看了资源类来澄清问题并找到任何解决方法。
\n\npublic CharSequence getQuantityText(@PluralsRes int id, int quantity)\n throws NotFoundException {\n NativePluralRules rule = getPluralRule();\n CharSequence res = mAssets.getResourceBagText(id,\n attrForQuantityCode(rule.quantityForInt(quantity)));\n if (res != null) {\n return res;\n }\n res = mAssets.getResourceBagText(id, ID_OTHER);\n if (res != null) {\n return res;\n }\n throw new NotFoundException("Plural resource ID #0x" + Integer.toHexString(id)\n + " quantity=" + quantity\n + " item=" + stringForQuantityCode(rule.quantityForInt(quantity)));\n}\nRun Code Online (Sandbox Code Playgroud)\n\n根据此代码,如果给定数量没有找到复数规则,则将给出规则为“OTHER”的复数(在我们得到例外之前)。我将“其他”项(规则)添加到 strings.xml 中的复数定义中。更新了应用程序,从那时起我没有从该设备列表中收到任何此类异常的报告。
\n\n就我而言,它是俄语语言环境:
\n\n<plurals name="career_tournament_goal_wins_left">\n <item quantity="one">\xd0\xbe\xd1\x81\xd1\x82\xd0\xb0\xd0\xbb\xd0\xb0\xd1\x81\xd1\x8c %1$s \xd0\xbf\xd0\xbe\xd0\xb1\xd0\xb5\xd0\xb4\xd0\xb0</item>\n <item quantity="few">\xd0\xbe\xd1\x81\xd1\x82\xd0\xb0\xd0\xbb\xd0\xbe\xd1\x81\xd1\x8c %1$s \xd0\xbf\xd0\xbe\xd0\xb1\xd0\xb5\xd0\xb4\xd1\x8b</item>\n <item quantity="many">\xd0\xbe\xd1\x81\xd1\x82\xd0\xb0\xd0\xbb\xd0\xbe\xd1\x81\xd1\x8c %1$s \xd0\xbf\xd0\xbe\xd0\xb1\xd0\xb5\xd0\xb4</item>\n <item quantity="other">\xd0\xbe\xd1\x81\xd1\x82\xd0\xb0\xd0\xbb\xd0\xbe\xd1\x81\xd1\x8c %1$s \xd0\xbf\xd0\xbe\xd0\xb1\xd0\xb5\xd0\xb4</item> <!-- for Huawei G700-u20 -->\n</plurals>\nRun Code Online (Sandbox Code Playgroud)\n\n它不是万能药,但至少可以作为解决方法。
\n\n快乐编码...
\n| 归档时间: |
|
| 查看次数: |
948 次 |
| 最近记录: |