Dialog を Fragment 化

ダイアログを表示するのにネットを検索してたら、方法が2種類あるらしい。

簡単に説明すると、旧来通りのやり方と、新しいやり方があって、旧来のやり方は非推奨になりましたよってことらしい。
まぁ、良く理解してないんだけど、非推奨じゃないほうが良さそげよね・・・ってことで、新しいやり方でやってみることに。

こちら様のサイト の書き方がコードが少なそげ、ってことに参考にしました。

何やら DialogFragment とやらを継承して、ダイアログを表示するクラスを作ってやって、それを呼び出す方式のもよう。

参考にしたサイト様をちゃんと読めば分かるんだけど、こちらは Android 3.0 以前も視野に入れて書かれている記事でして、理解度ゼロでAndroid 4.0 以降のプロジェクトに組み込み始めて、危うく沼にはまりそうになったので、ちょっとまとめておきます。
※いや、いつもごとくワタシが全面的に悪いので、サイト様のせいではありません。

まず、MainActivity クラスが継承するクラスですが、

public class MainActivity extends FragmentActivity {

となってますが、これはいつも通り

public class MainActivity extends Activity {

で、OK。


それと、ダイアログを表示するところの

dialog.show(getSupportFragmentManager(), "dialog");

は、support.v4 パッケージを使ってない場合は

dialog.show(getFragmentManager(), "dialog");

で大丈夫そうです。


あとは、DialogInteface.OnClickListener をインポートしてしまって、View.OnClickListener が効かなくなってしまったりとか、フラグメント・クラス内の変数に final を付け忘れて、onClick 内で参照できなかったりするという素人丸出しの間違いもありましたが、ま、これは通常運転。

というわけで、こちらのサイト様 も参考になりました。


スポンサーサイト

コメント

非公開コメント