この文書の現在のバージョンと選択したバージョンの差分を表示します。
| 両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン | ||
|
dialogfragmentを使ったカスタムダイアログ [2015/02/20 15:28] sou [親Activityにコールバックを返す] |
dialogfragmentを使ったカスタムダイアログ [2015/02/25 15:30] (現在) sou [Dialogの表示] |
||
|---|---|---|---|
| ライン 3: | ライン 3: | ||
| 表示したいようにxmlを編集して頂ければそのままダイアログとして表示されます。\\ | 表示したいようにxmlを編集して頂ければそのままダイアログとして表示されます。\\ | ||
| MAX_HEIGHT, MAX_WIDTHを0.9Fにすれば縦横90%の大きさで表示されます。\\ | MAX_HEIGHT, MAX_WIDTHを0.9Fにすれば縦横90%の大きさで表示されます。\\ | ||
| - | 画像のPopupWinodwのように一枚だけ画像を表示したい。などであれば、ImageViewをnewしてそのままsetContentView()にImageViewを渡してやればxmlは不要です。 | + | 画像のPopupWinodwのように一枚だけ画像を表示したい。などであれば、ImageViewをnewしてそのままDialog#setContentView()にImageViewを渡してやればxmlは不要です。 |
| * ダイアログを終了する | * ダイアログを終了する | ||
| ライン 46: | ライン 46: | ||
| lp.width = dialogWidth; | lp.width = dialogWidth; | ||
| lp.height = dialogHeight; | lp.height = dialogHeight; | ||
| - | // lp.windowAnimations = R.style.DialogAnimation; // Dialogの表示にアニメーションを入れる場合ここで読み込む | + | // lp.windowAnimations = R.style.DialogAnimation; // Dialogの表示アニメーション |
| dialog.getWindow().setAttributes(lp); | dialog.getWindow().setAttributes(lp); | ||
| } | } | ||
| } | } | ||
| - | ===== 親Activityにコールバックを返す ===== | ||
| - | ここで投げたPendingIntentは親ActivityのonActivityResultで受け取ります。\\ | ||
| - | Intent#putExtra()で値を渡すこともできます。 | ||
| - | + | ===== Dialogの表示 ===== | |
| - | public void fncCallback(String cb){ | + | ActivityからFragmentDialog#show()で表示できます。第2引数にタグを設定することも出来ます。\\ |
| - | Intent result = new Intent(); | + | タグやリクエストコードは定数化しておいたほうが良さそう。 |
| - | result.putExtra("callback", cb); | + | |
| - | + | ||
| - | PendingIntent pi = getActivity().createPendingResult(getTargetRequestCode(), result, | + | |
| - | PendingIntent.FLAG_ONE_SHOT); | + | |
| - | try { | + | |
| - | pi.send(getActivity().RESULT_OK); | + | |
| - | } catch (PendingIntent.CanceledException e) { | + | |
| - | e.printStackTrace(); | + | |
| - | } | + | |
| - | } | + | |
| - | + | ||
| - | ===== ダイアログの表示 ===== | + | |
| - | タグやリクエストコードなどはonActivityResultやDialog側でも使用するので、定数化しておいたほうが良さそうです。 | + | |
| FragmentManager manager = getFragmentManager(); | FragmentManager manager = getFragmentManager(); | ||
| ライン 88: | ライン 72: | ||
| + | ===== Dialogから親Activityにコールバックを返す ===== | ||
| + | * Fragment側の実装 | ||
| + | ここで投げたPendingIntentは親ActivityのonActivityResultで受け取ります。\\ | ||
| + | Intent#putExtra()で値を渡すこともできます。 | ||
| + | |||
| + | |||
| + | public void fncCallback(String cb){ | ||
| + | Intent result = new Intent(); | ||
| + | result.putExtra("callback", cb); | ||
| + | | ||
| + | PendingIntent pi = getActivity().createPendingResult(getTargetRequestCode(), result, | ||
| + | PendingIntent.FLAG_ONE_SHOT); | ||
| + | try { | ||
| + | pi.send(getActivity().RESULT_OK); | ||
| + | } catch (PendingIntent.CanceledException e) { | ||
| + | e.printStackTrace(); | ||
| + | } | ||
| + | } | ||
| + | * Activity側の実装 | ||