Che*_*eng 38 android android-fragments android-viewpager fragmentpageradapter
目前,使用a FragmentActivity,我使用以下代码在2种类型的片段之间切换.
private void toggle() {
Fragment oldFragment = getSupportFragmentManager().findFragmentById(R.id.content);
Fragment fragment = null;
if (oldFragment instanceof ColorFragment) {
fragment = new ViewPagerFragment();
} else {
fragment = new ColorFragment(android.R.color.black);
}
getSupportFragmentManager().beginTransaction().replace(R.id.content, fragment).commitAllowingStateLoss();
}
Run Code Online (Sandbox Code Playgroud)
2片段正在切换.
ViewPager.用户可以在紫色片段和蓝色片段之间滑动.负责刷紫色和蓝色碎片的代码如下.
private static class MyFragmentPagerAdapter extends FragmentPagerAdapter {
public MyFragmentPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public int getCount() {
return 2;
}
@Override
public Fragment getItem(int position) {
switch (position) {
case 0:
return new ColorFragment(android.R.color.holo_purple);
default:
return new ColorFragment(android.R.color.holo_blue_bright);
}
}
}
Run Code Online (Sandbox Code Playgroud)
但是,我在翻转期间遇到了奇怪的行为.
我认为我的情况类似于FragmentPagerAdapter,没有调用getItem
但是,我不想使用FragmentStatePagerAdapter,因为在页面之间切换时可能会产生更多开销.
解决这个问题的任何解决方法?
我提供了一个完整可行的源代码来演示此问题:https://www.dropbox.com/s/jok9tz5ktvfcteo/viewpagerbug.zip
Luk*_*rog 111
解决这个问题的任何解决方法?
我已经下载了您的代码,问题出现了,因为您没有Fragments正确处理这些问题.最精确的是你使用嵌套Fragments在ViewPager基础上Fragment,为此ViewPager你创建适配器,如下所示:
MyFragmentPagerAdapter myFragmentPagerAdapter = new MyFragmentPagerAdapter(this.getFragmentManager());
Run Code Online (Sandbox Code Playgroud)
相反,您应该使用getChildFragmentManager()绑定嵌套片段:
MyFragmentPagerAdapter myFragmentPagerAdapter = new MyFragmentPagerAdapter(this.getChildFragmentManager());
Run Code Online (Sandbox Code Playgroud)
此外,您不应该通过构造函数将数据传递给数据Fragment,因为数据将无法在配置更改后继续存在,并且会出现不良内容.请Bundle改用.
Vin*_*yak 12
全球工作测试解决方案
getSupportFragmentManager()保留空引用一些时间,View寻呼机不会创建新的片段实例.因为它找到对同一片段的引用.因此,这种用法getChildFragmentManager()以简单的方式解决了问题.
别
new PagerAdapter(getSupportFragmentManager(), fragments);
做
new PagerAdapter(getChildFragmentManager() , fragments);
| 归档时间: |
|
| 查看次数: |
18828 次 |
| 最近记录: |