gpt4 book ai didi

java - 更改屏幕旋转时 ViewPager fragment 消失

转载 作者:IT老高 更新时间:2023-10-28 21:06:27 24 4
gpt4 key购买 nike

我正在开发包含 ViewPagerFragment 的 android 应用程序,如下所示:

MainActivity(MainActivityFragment(screenSlideViewPager(Fragments))),意思是:

Activity contains Fragment contains ViewPager contains fragment s

现在我的问题是当旋转设备或更改屏幕旋转时,ViewPager 中的所有 fragment 都消失了。

有解决这个问题的想法吗?

编辑 1

MainActivity.java:

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

if (getSupportFragmentManager().findFragmentByTag(TAG) == null) {
final FragmentTransaction ft = getSupportFragmentManager()
.beginTransaction();
ft.add(android.R.id.content, new MainActivityFragment(), TAG);
ft.commit();
}
}

MainActivityFragment.java:

public class MainActivityFragment extends Fragment {
private ViewPager mPager = null;
private PagerAdapter mPageAdapter = null;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
final View reVal = inflater.inflate(R.layout.activity_main, container, false);
mPager = (ViewPager) reVal.findViewById(R.id.pagerMainContent);
mPageAdapter = new ScreenSlidePagerAdapter(getActivity().getFragmentManager());
mPager.setAdapter(mPageAdapter);
return reVal;
}

private MainGridViewFragment mainGridFragment;
private AlphabetGridViewFragment alphabetGridFragment;

private class ScreenSlidePagerAdapter extends FragmentStatePagerAdapter {
public ScreenSlidePagerAdapter(FragmentManager fm) {
super(fm);
}

@Override
public android.app.Fragment getItem(int position) {
switch (position) {
case 1:
mainGridFragment = new MainGridViewFragment();
return mainGridFragment;
case 0:
alphabetGridFragment = new AlphabetGridViewFragment();
return alphabetGridFragment;
default:
return null;
}
}

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

编辑 2 The Activity After Screen Rotation

显然MainActivityMainActivityFragment都被加载了,证明是ActionBar,另请注意,ViewPager 也已加载,因为您仍然可以在页面之间导航(蓝灯表示寻呼机已到达最后一页)但您看不到其内容。

最佳答案

看起来您的主要 Activity 正在使用 getSupportFragmentManager(),而您的 Fragment 正在使用 getFragmentManager()。

不确定这是否值得回复,但我的评分太低,无法以其他方式回复。 :)

编辑:我相信您可能还需要使用支持库扩展 FragmentActivity。

见:https://stackoverflow.com/a/10609839/2640693

编辑 2:

public class MainActivityFragment extends FragmentActivity {
private ViewPager mPager = null;
private PagerAdapter mPageAdapter = null;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
final View reVal = inflater.inflate(R.layout.activity_main, container, false);
mPager = (ViewPager) reVal.findViewById(R.id.pagerMainContent);
mPageAdapter = new ScreenSlidePagerAdapter(getChildFragmentManager());
mPager.setAdapter(mPageAdapter);
return reVal;
}

private MainGridViewFragment mainGridFragment;
private AlphabetGridViewFragment alphabetGridFragment;

private class ScreenSlidePagerAdapter extends FragmentStatePagerAdapter {
public ScreenSlidePagerAdapter(FragmentManager fm) {
super(fm);
}

@Override
public Fragment getItem(int position) {
switch (position) {
case 1:
mainGridFragment = new MainGridViewFragment();
return (Fragment)mainGridFragment;
case 0:
alphabetGridFragment = new AlphabetGridViewFragment();
return (Fragment)alphabetGridFragment;
default:
return null;
}
}

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

关于java - 更改屏幕旋转时 ViewPager fragment 消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18075853/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com