2013-03-25 72 views
0

服务器上有一些同步过程用于更新数据库,并且我想刷新父对象点击对话框中的活动以取得视图中的同步值。刷新片段关闭对话框片段

我有三个fragments- FragmentA.javaFragmentB.javaragmentC.java

FragmentA.java,我有公共接口OnEntrySelectedListener其具有方法getDialog()和 其他片段类FragmentB.java实现了这个接口,并具有定义getDialog()方法。

FragmentA.java

class FragmentA extends Fragment 
{ 
    public interface OnEntrySelectedListener 
    { 
    getDialog(); 
    } 
} 

FragmentB.java

class FragmentB extends FragmentActivity implements FragmentA.OnEntrySelectedListener 
    { 
    @Override 
    public void getDialog(Bundle bundle) { 
     FragmentC cf = new FragmentC(); 
     cf.setArguments(bundle); 
     cf.show(getSupportFragmentManager(), "dialog"); 
     } 
    } 

FragmentC.java

class FragmentC extends DialogFragment { 
     @Override 
    public void onCreate(Bundle savedInstanceState) { 
     //some code here 
     } 

    @Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
    Bundle savedInstanceState) 
    { 
    view = inflater.inflate(R.layout.shared,container, false); 
     view.findViewById(R.id.button1).setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View arg0) 
     { 
      getDialog().dismiss(); //Here after dismiss, I want to refresh FragmentA 
     } 
    }); 
     return view; 


} 

现在我想刷新FragmentA关闭FragmentC

回答

0

您可以在接口和回调添加到C++做这样的事情:

@Override 
    public void onDismiss(DialogInterface dialog) { 
    if (getActivity() != null && getActivity() instanceof Dismissed) { 
     ((Dismissed) getActivity()).dialogDismissed(); 
    } 
    super.onDismiss(dialog); 
    } 

    public interface Dismissed { 
    public void dialogDismissed(); 
    } 

然后在主活动,您可以实现该接口,当你得到了你的呼叫转发给片段A.

你也可以触发FragmentA会听的刷新事件。

+0

在主要活动中实现此接口后,如何在此主要活动中接到呼叫? – 2013-03-25 15:59:54

+0

我添加的代码应该在dialogfragment中。如果主活动(活动持有片段C)实现了Dismissed接口,则在对话框关闭时,它将在dialogDismissed方法上获得一个调用。 – Heinrisch 2013-03-25 16:07:06

+0

在A中调用一些函数关闭。在活动的dialogDismissed()do fragmentA.refresh() – Heinrisch 2013-03-25 16:50:13