5

我有一个 ViewPager。我的 FragmentPageAdapter 在 getItem() 方法中返回 Viewpager 的位置。但是在旋转屏幕后,方法不返回任何值。为什么?如果我理解正确,每次旋转屏幕时都会调用 OnCreateView(),但为什么它不再返回值?有人可以指出如何解决这个问题吗?谢谢

编辑:我的 FragmentPageAdapter:

public Fragment getItem(int position) {

   return Fragment_results.newInstance(position);
}

我的片段:

public static Fragment_results newInstance(int i) {

    Fragment_results fragment = new Fragment_results();
    fragment.mContent = i +"";

    return fragment;
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.layout_result, null);
    ((TextView) view.findViewById(R.id.text)).setText(mContent);
4

1 回答 1

13

在创建 ViewPager 实例以及设置新适配器时,该位置设置为 0。当onCreateView()被调用时,您实际上是在重建整个应用程序。为了恢复到原来的位置,您必须首先onSavedInstanceState(Bundle savedInstanceState)通过 Bundle 使用和存储项目位置。

@Override
protected void onSaveInstanceState(Bundle outState) {
  super.onSaveInstanceState(outState);
  outState.putInt("pageItem", myViewPager.getCurrentItem());
}

然后在 中onCreate,恢复 viewPager 的状态,如下所示:

if (savedInstanceState != null) {
  myViewPager.setCurrentItem(savedInstanceState.getInt("pageItem", 0));
}
于 2012-09-27T13:51:01.953 回答