アプリケーションを横向きモードと縦向きモードの両方で実行したいと考えています。リストをスワイプするたびに各フラグメントを使用ViewPager
してFragmentPagerAdapter
切り離しますが、ユーザーがスワイプして戻ったときに簡単に再接続できるように、それらをメモリに保持します。protrait モードで正常に動作します。しかし、横向きモードにすると、画面を入れ替えると最初のフラグメントビューのみが表示されます。解決策を教えてください。
フラグメントアダプター:
public class FragmentAdapter extends FragmentStatePagerAdapter
{
private final int three = 3 ;
public FragmentAdapter(FragmentManager fm)
{
super(fm);
Log.e("adapter", "const");
}
@Override
public Fragment getItem(int position)
{
Log.e("adapter", "getitem");
return ViewFragment.newInstance(position);
}
@Override
public int getCount()
{
Log.v("adpt", "getcount");
return three;
}
}
ビューフラグメント:
public final class ViewFragment extends Fragment
{
private int position;
public static ViewFragment newInstance(int position)
{
ViewFragment viewFragment = new ViewFragment();
viewFragment.position = position;
Log.e("newinstance", "pos="+position);
return viewFragment;
}
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState)
{
Log.d("oncreateview", ":)");
View view = null ;
if (position == 0)
{
Log.e("oncreateview", "0/"+position);
View v = inflater.inflate(R.layout.first_view_fragment, null) ;
view = v.findViewById(R.id.firstViewFragmentLayout);
}
else if (position == 1 )
{
Log.e("oncreateview", "1/"+position);
View v = inflater.inflate(R.layout.second_view_fragment, null) ;
view = v.findViewById(R.id.secondViewFragmentLayout);
}
else if (position == 2)
{
Log.e("oncreateviewr", "2/"+position);
View v = inflater.inflate(R.layout.third_view_fragment, null) ;
view = v.findViewById(R.id.thirdViewFragmentLayout);
}
return view;
}
}