2012年7月16日月曜日

onCreateDialog()で渡す動的パラメータについて

Activity内部でダイアログを生成する場合、自前でAlertDialog等を
生成して表示するよりは、Acitivityに任せたほうが管理が楽になる。
onCreateDialog()で生成処理、onPrepareDialog()で表示前処理を行い、
実際に表示したい箇所でshowDialog()を呼び出せばよい。

ここでonCreateDialog()はダイアログ呼び出し時の初回しか実行されないため、
onCreateDialog()内部で動的なパラメータを設定してしまうと、最初に渡した
値を使用し続けてダイアログを表示し続ける事になってしまう。
(例えばGridViewのクリック位置を渡したい場合など)

そこでshowDialog()の直前にremoveDialog()を呼び出して、ダイアログを
一旦破棄して再生成させる事で、毎回動的なパラメータを適用する事が出来る。
あまりスマートな方法ではないが、パラメータを渡すためには仕方ないとも思える。

最後に、色々なサイトでAlertDialogを自前で生成、表示しているパターンを
よく見かけるが、これは画面の縦横切替やHOMEボタン押下した場合に
WindowLeakが発生する場合があるため、自前管理は極力やめた方がよい。

0 件のコメント:

コメントを投稿