ViewPager com uma página contendo vários fragmentos “java.lang.IllegalArgumentException: nenhuma vista encontrada para o id”

No meu pequeno aplicativo para Android, tenho umViewPager com 3 páginas, cada página contém um fragmento, tudo está funcionando bem com umFragmentStatePagerAdapter (Vejopergunta anterior).

Agora para telas maiores, eu gostaria de manter umViewPager, mas eu quero que os dois primeiros fragmentos estejam na mesma primeira página.

Para isso, eu implemento meu próprio PagerAdapter e isso está funcionando principalmente, o único problema que estou tentando resolver é quando estou girando a tela, recebo um erro:

12-11 16:34:13.526: ERROR/AndroidRuntime(9221): FATAL EXCEPTION: main
        java.lang.RuntimeException: Unable to start activity ComponentInfo{com.matthieu/com.matthieu.TestActivity}: java.lang.IllegalArgumentException: No view found for id 0x7f030002 (com.matthieu:id/top_fragment) for fragment TestFragment{481a3a98 #0 id=0x7f030002}
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
        at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:3815)
        at android.app.ActivityThread.access$2400(ActivityThread.java:125)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2037)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:123)
        at android.app.ActivityThread.main(ActivityThread.java:4627)
        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:871)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:629)
        at dalvik.system.NativeStart.main(Native Method)
        Caused by: java.lang.IllegalArgumentException: No view found for id 0x7f030002 (com.matthieu:id/top_fragment) for fragment TestFragment{481a3a98 #0 id=0x7f030002}
        at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:903)
        at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1088)
        at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1070)
        at android.support.v4.app.FragmentManagerImpl.dispatchActivityCreated(FragmentManager.java:1861)
        at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:547)
        at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1129)
        at android.app.Activity.performStart(Activity.java:3781)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2636)
        ... 12 more

Eu coloquei um código de exemplo simulando o que estou tentando fazer (e mostrando essa mensagem de erro) emGitHub.

Eu acho que um problema que eu tenho é por causa dos fragmentos que eu tenho na aplicação real, eu não posso realmente ter umstatic newInstance construtor, mas em vez disso os fragmentos são criados antes do tempo e tem 'setRetainInstance (true);' conjunto.

Eu entendo o id doviewGroup que irá conter o fragmentodeve fazer parte da hierarquiae, eventualmente, eu acho que é ...

Se isso faz alguma diferença, estou usando a biblioteca de suporte e o SherlockActionBar para manter a compatibilidade retroativa com dispositivos mais antigos.

Alguma idéia de como fazer isso?

EDITAR: Eu descobri que se eu remover os fragmentos doFragmentManager emonSaveInstanceState Eu não estou mais tendo nenhum acidente. Todos os fragmentos são recriados a partir do zero, o que não é o que eu quero, mas acho que posso ter que fazer isso e de alguma forma recuperar esses fragmentos depois ....

questionAnswers(1)

yourAnswerToTheQuestion