2013-03-25 71 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