3

我有默认的主 - 明细流程,它在创建新项目时自动创建。我的问题是。当我添加一个按钮来详细的一面。有没有办法通过按下该按钮来更新我的列表?换句话说,ItemDetailFragment和ItemListFragment可以通信吗?碎片之间的通信

+0

只是看看它http://stackoverflow.com/a/37701651/1153703 –

回答

6

是的,只是通过活动与听众进行交流。

您的活动:

public class MyActivity extends FragmentActivity implements OnFragmentClickListener { 
    @Override 
    public void OnFragmentClick(int action, Object object) { 
     switch(action) { 
     } 
    } 
} 

监听器类:

public interface OnFragmentClickListener { 
     public void OnFragmentClick(int action, Object object); 
    } 

您的片段届时将有以下某处代码,以实现接口:

@Override 
    public void onAttach(Activity activity) { 
     super.onAttach(activity); 
     try { 
      mListener = (OnFragmentClickListener) activity; 
     } catch (ClassCastException e) { 
      throw new ClassCastException(activity.toString() + " must implement listeners!"); 
     } 
    } 

然后你片段如下所示彼此通信:fragmentA→activity→fragmentB。您的活动可以直接在碎片上调用methodes,而不用担心同步问题。从片段呼叫

例一:

mListener.OnFragmentClick(GLOBAL_ACTION_KEY someObject); 

活动,则处理:

public class MyActivity extends FragmentActivity implements OnFragmentClickListener { 
    @Override 
    public void OnFragmentClick(int action, Object object) { 
     switch(action) { 
      case GLOBAL_ACTION_KEY: 
       // you call fragmentB.someMethod(); 
       break; 
     } 
    } 
} 
+0

哪一个呢你的片段坐在吗?如果片段在他们的活动中,你可能会考虑通过静态类或类似的东西进行交流。你能否描述你的层次结构是怎样的? – Warpzit

+0

谢谢,它工作得很好,你真的做了我的一天。 – slezadav