Android 如何控制从support.v4.app.ListFragment创建的ViewPager旋转?

Android 如何控制从support.v4.app.ListFragment创建的ViewPager旋转?,android,android-fragments,android-viewpager,Android,Android Fragments,Android Viewpager,请帮帮我 我有以下问题。 来自片段,该片段是从getSupportFragmentManager()创建ViewPager创建的 FragmentTransaction fragmentTransaction = getFragmentManager().beginTransaction(); MyViewPager viewPager = MyViewPager.newInstance(); fragmentTransaction.add(R.id.container,

请帮帮我

我有以下问题。 来自片段,该片段是从getSupportFragmentManager()创建ViewPager创建的

    FragmentTransaction fragmentTransaction = getFragmentManager().beginTransaction();
    MyViewPager viewPager = MyViewPager.newInstance();
    fragmentTransaction.add(R.id.container, viewPager);
    fragmentTransaction.commit();
一切都好。但如果我旋转屏幕。 已触发onCreateActivity()

  • 在创建ViewPager的片段中
  • 可视寻呼机
  • 在页面中(ViewPager中的页面是一个片段)
  • 问题:

  • 应该是这样吗?按照这个逻辑,我必须保留ViewPager 定位并重新创建ViewPager
  • 如何使它在旋转时只叫屏幕 来自ViewPager和page的onCreateActivity()。而不是在 父片段
  • 当我尝试从以下位置创建ViewPager时:

    FragmentTransaction fragmentTransaction = getChildFragmentManager().beginTransaction();
    
    我得到以下错误

    java.lang.IllegalArgumentException: No view found for id 0x7f0f0054 (com.jd:id/container) for fragment MyViewPager{41dcf008 #0 id=0x7f0f0054 My_FRAGMENT}
                                                                        at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1059)
    

    谢谢。

    在您的活动中,如果(saveInstanceBundle==null){添加您的viewpager片段}这样,它就不会添加到设备的每个旋转中。此外,我将调用replace而不是add.add-这是可以理解的。这是我测试的,我忘了删除。这是不可能改变的吗?只有重新创建?是的,我们将了解整个活动生命周期的工作方式,注意Gmail、YouTube、SMS应用程序等如何处理屏幕旋转。你可以做一些黑客操作,这样应用程序就不会重新创建所有内容,但这并不是我所推荐的。也就是说,在任何旋转中,旋转活动并随之旋转框架布局。我理解正确吗?没有黑客是不可能把只有一个片段?与框架布局无关。除此之外,你是对的。它必须重新创建所有内容,以确定如何绘制布局等。