2012年6月25日月曜日

DialogFragmentメモ

Android Developersブログの記事「Using DialogFragments」を読んだのでメモ。
http://android-developers.blogspot.jp/2012/05/using-dialogfragments.html

先日、リファレンスを見ていてActivityのshowDialog()/dismissDialog()はdeprecatedなので、代わりに「DialogFragmentを使いましょう」と書いてあった。
気になっていたので、読んでみました。

このサンプル、v4 support libraryを使ってます。
1.6~2.3でもフラグメント使えるようになるアレです。
Eclipseでプロジェクトのルートフォルダを右クリックして
[Android Tools] - [Add Support Library...]
とやればOKです。
自動で
・libsフォルダの作成
・android-support-v4.jarの配置
・ビルドパスの設定
が行われます。

使い方(ざっくり)
・DialogFragmentを継承したクラスをつくる
・レイアウトはonCreateView()の中でinflate
・表示したい時は、上記のクラスをインスタンス化してshow()メソッドを呼ぶ

注意
このサンプルプログラム、IMEが「Google日本語入力Beta」だと動きませんでした...
onEditorAction()でアクションIDがIME_ACTION_DONEだったら入力内容をToastに表示してダイアログを閉じる作りですが、ログを仕込んで確認したところIME_ACTION_DONEが発生していないのが原因。
「Google日本語入力Beta」ではEnterキーをタップした時のアクションIDがIME_ACTION_UNSPECIFIEDでした。
他のIMEに切り替えたところ、問題なく動作。

感想
ブログ記事のスクリーンショットにもあるように4.xでTheme.Holoが効いているとそれなりの見栄えで表示されますが、2.xで表示するとこんな感じに...

ちゃんとレイアウトしないとダメですね。
ちょっとしたダイアログ出すのは、これまで通りAlertDialog.Builderでやろうかなぁというのが正直なところ。
とか、思ってたらこんな記事を発見!
Y.A.Mの雑記帳
「Android DialogFragment」を使うときの注意点。」
こうやって使うんですね。。
こんな有用な情報を発信できる存在でありたい...

参考
サンプルコードの閲覧・ダウンロードは下記から
dialogfragmentdemo


0 件のコメント:

コメントを投稿