2015年7月14日火曜日

ダイアログ フラグメント

ダイアログ出すにも、DialogFragment を使えということなのでメモ。
※参考URL
http://developer.android.com/reference/android/app/DialogFragment.html#AlertDialog
http://quesera2.hatenablog.jp/entry/2014/04/09/003146
のFragment→Fragment→Fragment のところ。
http://www.fkmsoft.jp/blog/software/android/fragment/dialog_2.html

アラートダイアログ以外を表示するには、 new AlertDialog.Builder の部分を変更。
ただし表示するものによって、必須の指定があるので、要確認。
たとえば、ドラムロールのTimePickerDialog だと、「~~ extends DialogFragment implements TimePickerDialog.OnTimeSetListener」として、Override で onTimeSet が必須になる。あとなぜか return new ~~~ .create(); じゃだめで、変数宣言して、それをリターンしてやらないとエラーだった。

また、.setView のところ、上記の例では EditText のウィジェットをjavaで生成して入れているが、これも好きなもの(seekbarとか)を入れられるし、レイアウト(XML)で凝ったものでも作ってインフレートしてからセットすることも試してないが、可能かと。

なお、フラグメントから呼び出したダイアログフラグメントより、呼び出し元のフラグメントへ処理を返す方法も記述。
呼び出す際に setTargetFragment しておき、呼び出し先で、getTargetFragment にて取得し、onActivityResult で返してやる。

※最後に。 上記の例では、フラグメントと、ダイアログフラグメントを分離しているが、
フラグメントクラス内にダイアログフラグメントを記述する場合は、public static とする。
「public class MyAlertDialogFragment extends DialogFragment」
 ↓
「public static class MyAlertDialogFragment extends DialogFragment」
意味としては、これは親クラスとは関係ないよ、という宣言。

0 件のコメント: