2014-11-10 15 views
5

Birden fazla aygıtın kullanımıyla ilgili olarak Huawei telefonları için yaptığım uygulamada birçok kilitlenme raporunu gördüm. Başka hiçbir telefonun bu sorunu yok ama sadece Huawei.Sadece Huawei telefonlarında bulunan Plural NotFoundException sadece

Tüm çoğul formlar var ve diğer aygıtlarda sorunsuz çalışıyor.

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) 
     ... 

herkes de bu sorun var mı:

O Huawei hiç çoğul işleyemez görünüyor?

+0

Nexus 7 çalıştıran benzer bir kilitlenme raporum var ** Android 5 **. Belki yeni Android sürümü ile ilgili? – Czechnology

+0

@Czechnology nope, aynı zamanda Android 4. + da ortaya çıktı. – makovkastar

+0

Herhangi bir çözüm buldunuz mu? Bu sorunu herhangi bir cihazda veya emülatörde yeniden oluşturamıyorum. – Czechnology

cevap

1

Analitik raporlarına göre bu tür bir sorun yaşadım. Aynı sorun - Huawei cihazı yok.

Bu

cihazların verilen listede problem oldu: - 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) 

Sorunu açıklığa kavuşturmak ve herhangi bir WORKAROUND bulmak için Resources sınıfına baktım. çoğul kuralı verilen miktar için bulunmazsa bu koda göre

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))); 
} 

, kural ile çoğul "DİĞER" verilecektir (biz İstisna var önce). Strings.xml dosyasında çoğul tanıma "diğer" öğesini (kural) ekledim. Uygulamanın güncellemesini yaptım ve o zamandan beri bu tür istisnalarla bu cihaz listesinden herhangi bir rapor almadım.

Benim durumumda bu Rus yerel ayarda oldu:

<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> 

Bu derde deva değil, ama en azından Pratik olarak çalışmaktadır.

Mutlu kodlama ...