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)にバンドルを介してアイテムの位置を使用して保存する必要があります。

@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 に答える