android – 使用ViewPager FragmentPagerAdapter处理方向更改

前端之家收集整理的这篇文章主要介绍了android – 使用ViewPager FragmentPagerAdapter处理方向更改前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在使用ViewPager和FragmentPagerAdapter处理屏幕方向更改时遇到问题.它在应用程序启动时工作正常,但在方向更改(可能丢失)后,viewpager中的片段不可见.我该如何解决这个问题.
以下是我的活动结构:

编辑:
这是清单文件

  1. <?xml version="1.0" encoding="utf-8"?>
  1. <uses-permission android:name="android.permission.INTERNET" />
  2. <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
  3. <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
  4. <uses-permission android:name="android.permission.GET_ACCOUNTS" />
  5. <uses-permission android:name="android.permission.USE_CREDENTIALS" />
  6.  
  7. <application
  8. android:name="com.test.myapp.NetworkManager.TBVolleyInstance"
  9. android:allowBackup="true"
  10. android:icon="@drawable/launcher"
  11. android:label="@string/app_name"
  12. android:theme="@style/CustomActionBarTheme">
  13. <Meta-data
  14. android:name="com.google.android.gms.version"
  15. android:value="@integer/google_play_services_version" />
  16.  
  17. <activity
  18. android:name=".Home"
  19. android:label="@string/app_name"
  20. android:windowSoftInputMode="adjustNothing" >
  21. </activity>
  22. <activity
  23. android:name=".RouterActivity"
  24. android:label="@string/app_name" >
  25. <intent-filter android:label="@string/app_name" >
  26. <action android:name="android.intent.action.MAIN" />
  27.  
  28. <category android:name="android.intent.category.LAUNCHER" />
  29. </intent-filter>
  30. </activity>
  31. </application>

FragmentPagerAdapter实现:

  1. public class PagerAdapter extends FragmentPagerAdapter{
  2.  
  3. public PagerAdapter(FragmentManager fm) {
  4. super(fm);
  5.  
  6. }
  7.  
  8. @Override
  9. public Fragment getItem(int index) {
  10.  
  11. switch (index) {
  12. case 0:
  13. return new Fragment1();
  14. case 1:
  15. return new Fragment2();
  16. }
  17. return null;
  18. }
  19.  
  20. @Override
  21. public int getCount() {
  22. return 2;
  23. }
  24.  
  25. @Override
  26. public float getPageWidth(int position){
  27. return(1.0f);
  28. }

}

解决方法

有点晚了,但我刚刚在我的应用上解决了这个问题.有两种解决方案.

1)您必须使用FragmentStatePagerAdapter而不是FragmentPagerAdapter

要么

2)如果ViewPager包装在Fragment中(如图所示),那么在创建ViewPager的适配器时,必须使用getChildFragmentManager()而不是getSupportFragmentManager().

希望这可以帮助某人,因为这让我花了一整天的折磨来解决这个问题.

猜你在找的Android相关文章