我已将 viewpager 添加到包含两个页面的活动中。
在活动的 onCreate 中,我将片段添加到 fragmentAdapter:
public void onCreate(Bundle savedInstanceState)
{
......
FragmentAdapter fragmentAdapter = new FragmentAdapter
(
getSupportFragmentManager(),
new Fragment[]{FragmentGame.builder(id), FragmentComments.builder(id)},
new String[]{getString(R.string.gameInfo), getString(R.string.comments)}
);
ViewPager viewPager = (ViewPager) findViewById(R.id.viewPager);
viewPager.setAdapter(fragmentAdapter);
public static FragmentGame builder(long id)
{
FragmentGame fragmentGame = new FragmentGame();
// fragmentGame.id = id;
Bundle bundle = new Bundle();
bundle.putLong(Constants.EXTRA_ID, id);
fragmentGame.setArguments(bundle);
return fragmentGame;
}
第一次创建该活动时,会按预期调用片段的onCreateView 。
奇怪的行为是当屏幕第一次旋转时,片段的onCreateView被调用了两次,但第二次调用只有正确的id,而第一次调用的id为 0。
在第二个屏幕旋转时,onCreateView被调用了 3 次,并且只有最后一个具有 id。
通过更多的屏幕旋转,onCreateView调用增加。
我发现了一些有关片段和屏幕旋转的相关问题,但我无法弄清楚为什么会发生这种情况以及如何以正确的方式进行操作。
- - - 更新 - - -
当我用直接值设置替换 bundle 时,ID 问题得到了解决。