2012-03-24 28 views

答えて

4

DialogFragmentのonDismiss()を上書きするか、または下にあるダイアログを構築するときに、リスナをsetOnDimissListener()に設定します。あなたがこれを使用することができます

http://developer.android.com/guide/topics/ui/dialogs.html

:これに対処するため

+16

これは、 'DialogFragment'にそれが却下されたことを通知しますが、質問に出された親フラグメントではありません。 – howettl

+0

親はこれらのメソッドを使用してコールバックを取得し、コールバックが解除されたときに応答することができます。使用法については、この回答を参照してください。http:// stackoverflow。com/a/29518363/445348 – cottonBallPaws

1

一つの方法は、活動中にあなたのDialogFragmentを埋め込むとダイアログとしての活動を表示することで、どのように説明して次のリンクにある先端がありますダイアログ(アクティビティ)が終了したときにonResume()が基底のフラグメントで呼び出されるため、基になるフラグメントを更新します。 onResume()メソッドでフラグメントの状態を更新するためのコードを追加してください。それもあります。

+0

これは最適なアプローチだと思いますが、API 8+についてはどうですか? API 11に追加されました – Iree

0

私はちょうど私のプロジェクトでこれを解決しました。私が持っているのは、ListFragmentを持つアクティビティです。そのリストフラグメントでは、特定のアイテムがクリックされると、DatePickerFragment(DatePickerDialogを表示するカスタムDialogFragment)が表示されます。日付を選択すると、ListFragmentをリフレッシュする必要があります。

public void criteriaChanged() 
{ 
    getFragmentManager().beginTransaction() 
      .replace(R.id.container, new FilterFragment()) 
      .commit(); 
} 
:私は単に、新しいインスタンスでListFragmentを置き換えるので、などの方法を実装し

はListFragmentをホストしている活動で、これを達成するために(そしてそれはまた、実際の問題として、DatePickerFragmentをホストしています)

は私がonDateSet()から、DatePickerFragmentからこのメソッドを呼び出します。

FilterActivity fa = (FilterActivity) getActivity(); 
fa.criteriaChanged(); 

これは私のためのトリックを行います。

25

あなたはリスナーを追加し、フラグメント・ダイアログのonDismissを上書きすることができます。

public class DismissDialog extends DialogFragment { 
    private DialogInterface.OnDismissListener onDismissListener; 

    public void setOnDismissListener(DialogInterface.OnDismissListener onDismissListener) { 
     this.onDismissListener = onDismissListener; 
    } 

    @Override 
    public void onDismiss(DialogInterface dialog) { 
     super.onDismiss(dialog); 
     if (onDismissListener != null) { 
      onDismissListener.onDismiss(dialog); 
     } 
    } 
} 

その後は、親には、リスナーを設定します。

DismissDialog d = new DismissDialog(); 
d.setOnDismissListener(new DialogInterface.OnDismissListener() { 
     @Override 
     public void onDismiss(DialogInterface dialog) { 

     } 
    }); 
d.show(getSupportFragmentManager(), "sometag"); 
+0

これは正解です – FireZenk

0

私は@Gazerの答えを試みたが、それ私のためには機能しません、私は別の断片クラスを使用しています

import android.app.Fragment; 

しかし、私はこの作業を得ました

  1. public class ActionBarFragment extends Fragment implements MyDialogListener{ 
    
        @Override 
        public void OnCloseDialog(Object obj) { 
         //Do you refresh 
        } 
    
  2. 親フラグメントにインタフェースクラスを実装し、その後、私はDialogFragment

    public class SpecialDialogFragment extends DialogFragment { 
    
        MyDialogListener mListener; 
    
        public SpecialDialogFragment(MyDialogListener listener) { 
         this.mListener = listener; 
        } 
    
        @Override 
        public void onStop() { 
         super.onStop(); 
         if(mListener!=null) 
          mListener.OnCloseDialog(null); 
        } 
    
  3. 内のリスナーを追加

    public interface MyDialogListener { 
        void OnCloseDialog(Object obj); //you can put any object here 
    } 
    
  4. インターフェース・クラスを作成します。

関連する問題