Android 如何解决屏幕旋转时,viewpager中的选项卡重叠的问题?

Android 如何解决屏幕旋转时,viewpager中的选项卡重叠的问题?,android,android-fragments,android-viewpager,Android,Android Fragments,Android Viewpager,这里,我有一个带有ViewPager的活动,它有4个选项卡,这里是活动屏幕快照链接 这是选项卡4的屏幕截图,当屏幕垂直时。 当活动打开时,我切换到第四个选项卡,然后切换到第二个选项卡,旋转屏幕,第四个选项卡的一部分将覆盖在第二个选项卡上,但当切换到第一个和第三个选项卡时,不会发生, 图片如下: 选项卡4: 选项卡1: 选项卡2: 我怎么能解决这个问题呢 以下是viewpager的适配器: public class MainPageFragmentPageAdapter extends F

这里,我有一个带有ViewPager的活动,它有4个选项卡,这里是活动屏幕快照链接

这是选项卡4的屏幕截图,当屏幕垂直时。 当活动打开时,我切换到第四个选项卡,然后切换到第二个选项卡,旋转屏幕,第四个选项卡的一部分将覆盖在第二个选项卡上,但当切换到第一个和第三个选项卡时,不会发生, 图片如下:

选项卡4:

选项卡1:

选项卡2:

我怎么能解决这个问题呢

以下是viewpager的适配器:

public class MainPageFragmentPageAdapter extends FragmentPagerAdapter {

SparseArray<Fragment> fragmentSparseArray = new SparseArray<Fragment>();

private Fragment currentSelectedFragment;

public MainPageFragmentPageAdapter(FragmentManager fm) {
    super(fm);
}

@Override
public Fragment getItem(int position) {
    if (fragmentSparseArray.get(position) == null) {
        Fragment fragment = null;
        switch (position) {
            case 0:
                fragment = new NewHomePageFragment();
                break;
            case 1:
                fragment = new NewDiscoverFragment();
                break;
            case 2:
                fragment = new NewUserMessageFragment();
                break;
            case 3:
                fragment = new NewUserDetailFragment();
        }
        fragmentSparseArray.put(position, fragment);
    }
    currentSelectedFragment = fragmentSparseArray.get(position);
    return currentSelectedFragment;
}

@Override
public void destroyItem(ViewGroup container, int position, Object object) {
}

@Override
public int getCount() {
    return 4;
}

public Fragment getCurrentSelectedFragment() {
    return currentSelectedFragment;
}

}
public类MainPageFragmentPageAdapter扩展了FragmentPagerAdapter{
SparseArray碎片SparseArray=新SparseArray();
私有片段currentSelectedFragment;
公共主页FragmentPageAdapter(FragmentManager fm){
超级(fm);
}
@凌驾
公共片段getItem(int位置){
if(fragmentsArray.get(position)==null){
片段=空;
开关(位置){
案例0:
fragment=新的NewHomePageFragment();
打破
案例1:
fragment=NewDiscoverFragment();
打破
案例2:
fragment=NewUserMessageFragment();
打破
案例3:
fragment=新的NewUserDetailFragment();
}
碎片。放置(位置,碎片);
}
currentSelectedFragment=FragmentsSparSearray.get(位置);
返回currentSelectedFragment;
}
@凌驾
公共项(视图组容器、int位置、对象){
}
@凌驾
public int getCount(){
返回4;
}
公共片段getCurrentSelectedFragment(){
返回currentSelectedFragment;
}
}

您想查看的任何代码请在下面进行评论。

正如您所说,当寻呼机不可见时,您不会销毁项目,因此它仍将保留在内存中,并重新绘制它。

请通过OnConfiguration Changed Android方法管理屏幕方向。

我发现问题与名为destroyItem的方法有关,当我覆盖此方法时,它就可以了,但它会报告一个异常,欢迎使用StackOverflow!我已经把你的图像嵌入了问题中。请使用按钮更正文本,以便您的问题得到您想要的描述。我不得不猜测你想要这些图像在哪里,因为它不是很清楚。