Monday, January 09, 2012

Fragmentを表示したり消したりする

画面方向の回転のタイミングで、Fragmentを表示したり消したりします。
方法は、回転のタイミングで呼ばれるActivityのonResumeのオーバーライドです。

 @Override
 public void onResume() {
  super.onResume();

  //画面のサイズを取得
  WindowManager wm = (WindowManager) getSystemService(Context.WINDOW_SERVICE);
  Display disp = wm.getDefaultDisplay();
  int width = disp.getWidth();

  //表示したり消したりするためのマネージャーを取得。
  FragmentManager fm = getFragmentManager();
  FragmentTransaction ft = fm.beginTransaction();

  //表示したり消したりするフラグメントを取得。
  Fragment mFragment1 = fm.findFragmentById(R.id.number_list);

  //画面の幅が900pxより小さかったら、消します。それ以外なら表示します。
  if (mFragment1 != null) {
   if (width < 900) {
    ft.hide(mFragment1);
   } else
    ft.show(mFragment1);
  }
  ft.commit();
 }

Galaxy Nexusで実行した結果ですが、横向きの時は画面幅が900px超えるので「1,2,3・・」と表示されるListFragmentが表示されます。
縦向きの時は画面幅は900pxを下回るのでこのListViewは表示されません。



No comments:

Post a Comment