2014-03-21 4 views
1

В настоящее время я разрабатываю приложение, использующее ViewPager, и при изменении ориентации он сбой. Я рассмотрел несколько разных сообщений об этом, но ни у кого из них нет той же ошибки, которую я получаю.Сбой приложения Android при изменении ориентации с помощью ViewPager

java.lang.NullPointerException 
at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1435) 
at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:440) 
at android.os.Handler.handleCallback(Handler.java:733) 
at android.os.Handler.dispatchMessage(Handler.java:95) 
at android.os.Looper.loop(Looper.java:136) 
at android.app.ActivityThread.main(ActivityThread.java:5017) 
at java.lang.reflect.Method.invokeNative(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:515) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) 
at dalvik.system.NativeStart.main(Native Method) 

Я добавил исправления, другие сообщения предполагают, а именно

@Override 
public void onSaveInstanceState(Bundle outState) 
{ 
    //first saving my state, so the bundle wont be empty. 
    outState.putString("WORKAROUND_FOR_BUG_19917_KEY", "WORKAROUND_FOR_BUG_19917_VALUE"); 
    super.onSaveInstanceState(outState); 
} 

, но это не сработало.

setRetainInstance(true); 

не указан в моем коде, его комментарии, как и было предложено (я также пытался установить его на false).

Я также указано

android:screenOrientation="portrait" 

который фиксирует проблему 90% времени. Однако, если устройство закрыто/поставлено на спящий режим, и мое приложение было открытым приложением в то время, а затем экран входа в систему стал ландшафтным, приложение снова запустится в фоновом режиме и произойдет сбой к моменту входа пользователя.

EDIT: Кроме того, проблема возникает только потому, что у меня есть два разных фрагментации с фрагментом карты Google.

Любая помощь была бы оценена, я чувствую, что я пробовал все.

+0

Какая версия Android? Требуется ли тэг 'google-maps'? –

+0

Я нацелен на версии sdk с 16 по 18, и это необходимо, потому что ошибка возникает только в том случае, если у меня есть два разных фрагмента карты. С одной проблемой не возникает. – TomW

+0

Чтобы уточнить, мой ViewPager имеет три фрагмента, первый имеет фрагмент карты, второй - нет, а третий имеет другой фрагмент карты. Если я вырву второй фрагмент карты, авария не произойдет, я недавно понял это. – TomW

ответ

0

Однажды у меня была та же проблема. Вы добавили фрагмент GoogleMap в XML. Тем не менее, documentation говорит:

Примечание: Вы не можете надуть макет в виде фрагмента, когда этот макет включает в себя в <fragment>. Вложенные фрагменты поддерживаются только при добавлении к фрагменту динамически.

В вашем случае вы хотите раздуть макет с помощью GoogleMaps <fragment> в фрагмент ViewPager, вы не можете этого сделать.

Вы должны добавить фрагмент GoogleMap в ViewPager из кода Java, например, с помощью метода ViewGroup (или его подкласса) addView(View v).

Смежные вопросы