Hey*_*ibi 30 java android android-fragments android-viewpager
我的工作包含Android应用程序ViewPager与FragmentS,这样的:
MainActivity(MainActivityFragment(screenSlideViewPager(Fragments))),意思是:
Activity contains Fragment contains ViewPager 包含 Fragment s
现在我的问题是当旋转设备或更改屏幕旋转时,ViewPager中的所有碎片都消失了.
有什么想法来解决这个问题吗?
编辑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();
}
}
Run Code Online (Sandbox Code Playgroud)
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;
}
}
}
Run Code Online (Sandbox Code Playgroud)
编辑2

显然,MainActivity和MainActivityFragment被加载,并且证明的ActionBar,还要注意ViewPager被装入了,因为你仍然可以在页面之间导航(蓝光意味着寻呼机达到最后一页),但你看不到它的内容.
Jon*_*Jon 19
当您的片段使用getFragmentManager()时,看起来您的主要活动是使用getSupportFragmentManager().
不确定这是否值得回答帖子,但我的评级太低,无法以任何其他方式回复.:)
编辑:我相信您可能还需要使用支持库扩展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;
}
}
}
Run Code Online (Sandbox Code Playgroud)
我尝试了很多解决方案,但在任 最后我修复如下:
使用getActivity().getSupportFragmentManager()而不是getChildFragmentManager()
覆盖ViewPagerAdapter类中的getItemId(int position)方法,如下所示:
@Override
public long getItemId(int position) {
return System.currentTimeMillis();
}
Run Code Online (Sandbox Code Playgroud)对我而言,它的工作就像魅力,请在这里评论您的观点.
对于有此问题的人,您可以尝试以下操作:
private void InitializeUI(){
mSectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager());
mViewPager = (ViewPager) findViewById(R.id.container);
mViewPager.setAdapter(mSectionsPagerAdapter);
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
setContentView(R.layout.activity_exame2);
InitializeUI();
}
Run Code Online (Sandbox Code Playgroud)
我花了 2 天时间解决这个问题,这是唯一对我有用的方法,记得在清单中将 android:configChanges="screenSize|orientation" 添加到您的活动中
| 归档时间: |
|
| 查看次数: |
13293 次 |
| 最近记录: |