Различные исключения, вызванные библиотекой совместимости Android Fragments.

Я создал приложение, используя (небольшой вариант Питера Дойла) поддержку Android/ библиотека совместимости (v4, редакция 7) для создания Activity, использующего как Fragments, так и Google Maps. Я тестировал приложение на Samsung Galaxy Nexus (Ice Cream Sandwich), Samsung Galaxy S II (Ice Cream Sandwich), HTC Desire HD (Gingerbread), HTC Wildfire S (Gingerbread) и эмуляторах. Приложение отлично работает на этих устройствах. Без проблем. Тем не менее, я опубликовал приложение и вижу различные отчеты об ошибках, вызванные этой библиотекой на разных телефонах, особенно когда действие возобновляется (т. е. кажется, что действие, в котором есть фрагменты, не может возобновиться на некоторых телефонах без принудительного закрытия ). Ниже я вставил несколько обрезанных трассировок стека в качестве примера. Меня это очень раздражает, потому что я не могу воспроизвести это на своих устройствах. Кто-нибудь еще сталкивался с подобными ошибками в их разработке и знает, что может их вызвать?

Исключение во время выполнения:

java.lang.RuntimeException:
__Невозможно начать действие...
java.lang.IllegalStateException:
__У указанного дочернего элемента уже есть родитель.
__Вы должны сначала вызвать removeView() для родителя дочернего элемента .
в android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1713)
в android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1738)
в android.app.ActivityThread.handleRelaunchActivity(ActivityThread .java:3024)
...
Причина: java.lang.IllegalStateException:
__У указанного дочернего элемента уже есть родитель.
__Вы должны сначала вызвать removeView() для родителя дочернего элемента.< br> в android.view.ViewGroup.addViewInner(ViewGroup.java:1976)
в android.view.ViewGroup.addView(ViewGroup.java:1871)
...

Илегалстатеексцептион

java.lang.IllegalStateException:
__Не удается выполнить это действие после onSaveInstanceState
в android.support.v4.app.FragmentManagerImpl.checkStateLoss(Unknown Source)
в android.support.v4.app.FragmentManagerImpl.beginTransaction (Неизвестный источник)
...

Илегалстатеексцептион

java.lang.IllegalStateException:
__Fragment cw{4067d550} не привязан к Activity
...

Исключение времени выполнения

java.lang.RuntimeException:
__Невозможно возобновить активность...
java.lang.NullPointerException
в android.app.ActivityThread.performResumeActivity(ActivityThread.java:2124)
в android.app. ActivityThread.handleResumeActivity(ActivityThread.java:2139)
...


person Adil Hussain    schedule 04.05.2012    source источник
comment
Я испытываю то же самое, вы узнали, как их избежать? Кажется, это проблема, связанная с библиотекой поддержки и некоторой пользовательской реализацией Android (sony ericson, motorola).   -  person Wizche    schedule 21.10.2012
comment
К сожалению нет. Большинство, если не все, ошибки, о которых я сообщал, вызваны этим. Не уверен, что это библиотека поддержки конкретно или фрагменты вообще глючат на некоторых устройствах. Пробовал всякие штуки, но радости не было, так что пришлось с этим жить. Приложение не будет работать идеально на всех устройствах...   -  person Adil Hussain    schedule 22.10.2012


Ответы (1)


У меня была проблема с библиотекой v4, и единственное, что ее исправило, это перейти в свойства -> Путь сборки Java -> Порядок и экспорт, а затем убедиться, что установлен флажок v4. В противном случае это давало мне ошибки classnotfound. Он начал падать только после того, как я переместил свой файл со своего компьютера на dropbox.com обратно на свой компьютер. Может быть, что-то изменилось, когда вы распространяли свое приложение?

person thomas.cloud    schedule 04.05.2012
comment
Спасибо за ответ Томас. Библиотека поддержки компилируется нормально и даже нормально работает на многих устройствах. Однако только на некоторых устройствах кажется, что моя активность, в которой есть фрагменты, не может возобновиться должным образом, не скручивая штаны и не закрывая принудительно. Любопытно узнать, сталкивался ли кто-нибудь еще с такой проблемой с библиотекой поддержки и могу ли я что-нибудь сделать, чтобы ее преодолеть. - person Adil Hussain; 07.05.2012
comment
Хорошо, возможно, это проблема устройства. Вы можете попробовать использовать что-то вроде bugsense для отслеживания ошибок по устройствам и, возможно, выяснить их причину. Удачи. - person thomas.cloud; 07.05.2012