DialogFragmentを使って編集画面を作る

ListFragmentに引き続きDialogFragmentを勉強がてら作成。仕様としてはこんな感じ。


  1. トップ画面にDBから取得した文字列を表示し、EDITボタンを押すことで編集画面ダイアログを開く。

  2. 編集画面ダイアログにはトップ画面で表示されていた文字列が入っており編集可能。EDITボタンを押すと文字列を更新してダイアログを閉じる。

  3. ダイアログを閉じた後のトップ画面には、更新文字列を反映する。

※9/2追記
現状、実装が間違っていて、編集後はUPDATEではなくINSERTしてしまっています。
そのため実際にはデータが次々と追加されて、そのうちのデータの一つが表示されている、というのが今のところの動作になっており、上記仕様どおりではないです。すみません...(´・ω・`)
ソースは追々修正かけたいと思います!→修正しました(9/6)

技術的な要素としては、DialogFragmentを使用した独自ダイアログ生成の勉強を、と思って作ったのでそこら辺と、あとDB操作や、ActivityとFragment間の連携(FragmentからActivityに対してのコールバック提供)あたり。

ソースはこちら。
https://github.com/TomckySan/EditDialog
とりあえずsrcフォルダ以下とレイアウトxmlだけ。
コメントなぐり書きなのはご愛嬌。


ダイアログについてはDialogクラスをカスタマイズしている。AlertDialogは使っていない。
AlertDialogクラスをBuilder使って生成する方法がおそらく一般的?なんだろうけど。

あと、コールバックの実現。
ダイアログを閉じた直後にTOP画面のActivityに文字列を反映させるために、コールバックの実装が必要だったのだが、初めOnDismissListenerを実装してダイアログのdismiss()を通知しようとするも、なかなかうまくいかなかった...。

なので、Fragmentでコールバックインターフェースを定義して、Activityに実装することで実現させる方針に切り替えた。結果としていい勉強になったので良かったよかった(*´∀`)


※以下参考にさせて頂きました。ありがとうございました。
【DialogFragment】
http://developer.android.com/reference/android/app/DialogFragment.html
【Dialogをフルカスタマイズする】
http://dev.classmethod.jp/smartphone/android/android-tips-45-custom-dialog/
【Y.A.Mの雑記帳】
http://y-anz-m.blogspot.jp/2011/05/androidfragment_19.html
mixi-inc/ActivityとFragment】
https://github.com/mixi-inc/AndroidTraining/wiki/2.02.-Activity-%E3%81%A8-Fragment