ユーザ用ツール

サイト用ツール


dialogfragmentを使ったカスタムダイアログ

差分

この文書の現在のバージョンと選択したバージョンの差分を表示します。

この比較画面にリンクする

両方とも前のリビジョン 前のリビジョン
次のリビジョン
前のリビジョン
dialogfragmentを使ったカスタムダイアログ [2015/02/19 15:13]
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にセットできるものなら何でも返せるかと思います。 
  
- +===== 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();​
ライン 89: ライン 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側の実装
dialogfragmentを使ったカスタムダイアログ.1424326434.txt.gz · 最終更新: 2015/02/19 15:13 by sou