2013-03-01 9 views
6

DialogFragmentの終了を処理する必要があります(たとえば、.dismissを呼び出した後)。たとえば、閉じた後にフラグメントを「含む」アクティビティ内にトーストを表示します。DialogFragment Closeイベント

イベントを処理するにはどうすればよいですか?

+0

のようなボタンのイベントを与え、その後、表示することができますそれが解雇されたときにトーストで? –

+0

はい、それは私がしたいことです – giozh

答えて

17

DialogFragmentにonDismiss()を上書きするか、フラグメントを構築するコードブロックにsetOnDismissListener()を使用してください。

+0

参照はonDismissを上書きするように指示しました。今私は別のトラブルがあります。どのように私はトーストを作成するためにメインビューのコンテキストを取得することができますか? – giozh

+0

コンテキストを取得する方法を尋ねる別の質問を作成すると、誰もが役に立ちます。すでにこの質問にも答えている他の回答があります。 onDismiss(..)内の –

11

私は同様の問題に直面しましたが、ダイアログを作成して表示したアクティビティではなく、ダイアログの終了に関する別のアクティビティを通知したかったのです。

Austynマホーニーが示唆したようにあなたは自分のDialogFragmentでonDismiss()メソッドをオーバーライドすることができ、まだDialogFragmentは、単に(による:Android Developers DialogFragment Reference)このような方法を提供していないので、あなたがは、setOnDismissListener()を使用することはできませんが。

しかし、まだ(私はそこにそれを見つけた:DialogFragment and onDismiss)、を却下ダイアログについて他のアクティビティを知らせるために別の良い方法があり、ここではそれが来る:

まず、あなたがあなたの活動をしなければなりません(あなたは却下ダイアログに関する情報を渡したい1)はOnDismissListenerを実装:

public final class YourActivity extends Activity implements DialogInterface.OnDismissListener { 

    @Override 
    public void onDismiss(final DialogInterface dialog) { 
     //Fragment dialog had been dismissed 
    } 

} 

再びAndroid Developers DialogFragment Reference DialogFragmentに応じて、既にonDismiss()方法でOnDismissListenerを実装します。あなたはそれをオーバーライドして、そこにあなたがYourActivityで実装あなたのonDismiss()メソッドを呼び出す必要が理由です:

public final class DialogFragmentImage extends DialogFragment { 

    @Override 
    public void onDismiss(final DialogInterface dialog) { 
     super.onDismiss(dialog); 
     final Activity activity = getActivity(); 
     if (activity instanceof DialogInterface.OnDismissListener) { 
      ((DialogInterface.OnDismissListener) activity).onDismiss(dialog); 
     } 
    } 

} 
+0

複数のダイアログがある場合、どのように1つのダイアログを識別できますか? – Anthea

+0

ダイアログが閉じられると、システムは 'onDismiss(最後のDialogInterfaceダイアログ)'引数で、無視されたダイアログへの参照を渡します。参照:http://developer.android.com/reference/android/app/DialogFragment.html#onDismiss(android.content.DialogInterface) – Krzysiek

0

あなたがダイアログを閉じたい

img_popup_timer_cancel.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       Toast.makeText(getActivity(), "Cancel", Toast.LENGTH_SHORT).show(); 
       **getDialog().cancel();** 
      } 
     }); 
関連する問題