FC2ブログ
管理人が気まぐれでいろいろ書きます。
スポンサーサイト
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
Android SDKが吐く2ペインレイアウトのコードを読んでみた
Android SDKが自動で吐き出してくれる2ペインレイアウトの時のソースがどんな実装になってるのかよくわからなかったので読んでました・・・

かなりざっくりまとめると左側ペインがアプリのインテントフィルターでMAINに指定されているので、左側ペインのActivityが最初に生成され、そのときOS側に画面サイズに合わせてFragmentを左右に割り当てた2ペインデザインでActivityを生成するのか、ListFragmentだけを割り当てた1ペイン表示にするか選択させてた

それで画面の差し替え、遷移の実装はListFragmentにListenerを仕掛けて押された時に2ペインモードならFragmentManagerを介してListから押されたアイテムに対応するFragmentへ差し替えをしていた
シングルペインモードの時はIntentを発効して2ペインモード時に右画面に対応するFragmentを持ったActivityへ飛ばす実装でした

この時2ペインか1ペインかの判定は2ペイン時は右側のペインを構成するFragmentが生成されるはずなのでその右側のFragmentが存在するかをfindViewByIdで検索し、nullじゃない場合(右側ペインが生成されている時)は2ペインでそれ以外は1ペインという判定をしていました

もし、独自のFragmentやActivityに飛ばしたいときはdefaultで生成されるListActivity内のonItemSelected(String id)メソッド内で引数で渡されたListのアイテムIDを元にFragmentManagerに差し替えを依頼するFragmentやIntentで飛ばすActivityを変えてあげると差し替えが出来ました

ちなみにFragment内のListで選択されたアイテムのIDの受け渡しはFragmentでアイテムを選択されたときに呼び出されるメソッドを定義したコールバックインターフェイスをListFragmentを持つ親Activityに実装しておいて、Fragmentが画面上に表示されたとき(?)(onAttach)されたときに引数で渡される親Activityへの参照を変数に入れて残しておいてFragment内のリストが変わった時にそのコールバックメソッド(コールバックインターフェイスを実装したFragmentの親Activity内のメソッド)を呼ぶ実装でした
スポンサーサイト
コメント
この記事へのコメント
コメントを投稿する
URL:
Comment:
Pass:
秘密: 管理者にだけ表示を許可する
 
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。