スキップしてメイン コンテンツに移動

投稿

5月, 2015の投稿を表示しています

「しまりす タネがブー!」を公開しました!

シマリスにひまわりの種を食べさせては出させる、非常に際どいアプリを開発しました。

しまりす タネがブー!」といいます。


遊び方は簡単。 1.しまりすのお口に種をスワイプして食べさせてあげます。
2.膨らんだほっぺをタッチします。
3.ぶーと吹き出します。


プライバシーポリシーについて ・入力情報を外部へ送信しません。
・インターネット接続権限は、AdMob広告のために使用されます


ダウンロード ↓下記からダウンロード↓
https://play.google.com/store/apps/details?id=another.mrt.gmail.com.chipmunkandseeds

DialogFragmentの中にあるボタンから呼び出し元Fragmentにコールバックを渡したい

今回は技術の話です。

表題の件について、案外ハマりました。

もう少し詳しく書くと、こんな感じです。
・ダイアログを出す
・ダイアログの中にはListViewがある
・ListViewの中にはボタンがある
・ボタンを押したら、呼び出し元のfragmentでUI変更をしたい

メンドクサポイントは以下の二点です。
・ダイアログの中のリストの中のボタンのイベント処理(深いわ!)
・ダイアログのコールバック処理

ネットで調べまくると、やはりみんな苦戦しているようで、case by caseで対応の仕方も変わります。

ふと思ったのは、このUI設計自体、推奨されないのではないかと。
ダイアログはパソコン世代にはお馴染みのUIですが、ここで何か色々するということ自体が、スマートフォンなどデバイスでは、俗っぽい言い方をすると「イケてない」のではないかと思うのです。

さて、
私の場合は条件がシンプルで、解決したものをまとめるとこんな感じ。
例としてダイアログを出して、閉じるという処理を紹介します。

○MainFragment1.宣言しとく
private FooDialogFragment FooDialogFragment;2.呼び出す(onCreateView内とか) setTargetFragmentの引数一番目は、戻ってくるfragment。二番目は識別用に任意のリクエストコードを指定します。Button FooButton = (Button) rootView.findViewById(R.id.btn_foo);FooButton.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { if(FooDialogFragment== null){FooDialogFragment= new FooDialogFragment(); } FooDialogFragment.setTargetFragment(MainFragment.this,1234);FooDialogFragment.show(getFragmentManager(), "dialog"); } });3.onActivityRes…