Активность на вкладках, похоже, умирает случайным образом, состояние загрузки доступно для рисования

#android #nullpointerexception

#Android #исключение nullpointerexception

Вопрос:

У меня есть TabActivity, который, похоже, умирает на небольшом наборе телефонов, когда я добавляю к нему возможность рисования. Из отчетов следует, что один и тот же код вкладки в какой-то момент был успешно запущен, но внезапно остановился во время одного запуска (обычно из-за ожидающего намерения)

Код, который выполняется в onCreate, заключается в следующем

 spec = theTtabHost.newTabSpec(STATS_TAG).setIndicator(getText(R.string.statsTab),
            res.getDrawable(R.drawable.ic_tab_stats))
  

Трассировка стека, которую я получаю, находится здесь

 java.lang.RuntimeException: Unable to start activity ComponentInfo{com.test/com.test.Main}: android.content.res.Resources$NotFoundException: File res/drawable/ic_tab_stats.xml from drawable resource ID #0x7f020013
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2737)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2753)
at android.app.ActivityThread.access$2500(ActivityThread.java:129)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2107)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:143)
at android.app.ActivityThread.main(ActivityThread.java:4701)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:521)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
at dalvik.system.NativeStart.main(Native Method)
Caused by: android.content.res.Resources$NotFoundException: File res/drawable/ic_tab_stats.xml from drawable resource ID #0x7f020013
at android.content.res.Resources.loadDrawable(Resources.java:1725)
at android.content.res.Resources.getDrawable(Resources.java:590)
at com.test.Main.onCreate(Main.java:162)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2701)
... 11 more
Caused by: java.lang.NullPointerException
at android.graphics.drawable.DrawableContainer$DrawableContainerState.addChild(DrawableContainer.java:349)
at android.graphics.drawable.StateListDrawable$StateListState.addStateSet(StateListDrawable.java:265)
at android.graphics.drawable.StateListDrawable.inflate(StateListDrawable.java:173)
at android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:796)
at android.graphics.drawable.Drawable.createFromXml(Drawable.java:737)
at android.content.res.Resources.loadDrawable(Resources.java:1722)
... 15 more
  

The ic_tab_stats.xml файл находится в режиме рисования и находится здесь.

 <selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/stats"
          android:state_selected="true" />
    <item android:drawable="@drawable/stats_deselect" />
</selector>
  

Stats.png и stats_deselect.png являются одноранговыми внутри drawable. hdpi и ldpi не имеют ни одного файла, а mdpi пуст. Мое приложение поддерживает возврат к версии 1.5, поэтому я использовал drawable вместо mdpi.

Судя по отчетам, это кажется довольно случайным.

Ответ №1:

Оказывается, это своего рода нормальное поведение при обновлении Android.

Комментарии:

1. таер, не могли бы вы объяснить немного больше?