android中fragment和activity之间相互通信

来源:互联网 发布:js鼠标点击事件 编辑:程序博客网 时间:2024/06/05 06:19

(转载)http://haiyang08101.iteye.com/blog/2155537

在用到fragment的时候,老是会遇到一个问题,就是fragment与activity之间的通信。下面就来记录一下activity和fragment之间 通过实现接口来互相通信的方法。

1. activity 向fragment发出通信,就这么写:代码  收藏代码
  1. private OnMainListener mainListener;  
  2.   
  3. // 绑定接口  
  4.   
  5. @Override  
  6.   
  7. public void onAttachFragment(Fragmentfragment) {  
  8.   
  9. try {  
  10.   
  11. mainListener = (OnMainListener)fragment;  
  12.   
  13. } catch (Exception e) {  
  14.   
  15. throw new ClassCastException(this.toString() + " must implementOnMainListener");  
  16.   
  17. }  
  18.   
  19. super.onAttachFragment(fragment);  
  20.   
  21. }  
  22.   
  23. // 接口  
  24.   
  25. public interface OnMainListener {  
  26.   
  27. public void onMainAction();  
  28.   
  29. }  

 onMainAction方法是activity向fragment发出通信的方法,里面可以放参数, 在要发出通信的地方直接调用该方法即可。

在对应的fragment里面要这么写:代码  收藏代码
  1. public class MyFragment extends Fragment implementsOnMainListener {  
  2.   
  3. ……………………  
  4.   
  5. @Override  
  6.   
  7. public voidonMainAction() {  
  8.   
  9. //这里是实现通信的接口  
  10.   
  11. }  

 ----------------------------------------------------------------------------

2. fragment向activity 发出通信:(和前面差不多,把它调过来用就可以)

Java代码  收藏代码
  1. private OnFragmentListener mListener;  
  2.   
  3. @Override  
  4.   
  5. public void onAttach(Activity activity) {  
  6.   
  7. super.onAttach(activity);  
  8.   
  9. try {  
  10.   
  11. mListener = (OnFragmentListener) activity;  
  12.   
  13. catch (ClassCastException e) {  
  14.   
  15. throw newClassCastException(activity.toString() + " must implement OnFragmentListener");  
  16.   
  17. }  
  18.   
  19. }  
  20.   
  21. public interface OnFragmentListener {  
  22.   
  23. public void onFragmentAction(intflag);  
  24.   
  25. }  

 

在activity中 实现接口:代码  收藏代码
  1. public class MainActivity extends Activity implements OnFragmentListener{  
  2.   
  3. ………………  
  4.   
  5. // 实现接口方法  
  6.   
  7. @Override  
  8.   
  9. public void onFragmentAction(int flag) {  
  10.   
  11. //实现通信的接口  
  12.   
  13. }  

 两者都是通过接口的实现来进行通信的,重要的地方就是分别在onAttachFragment和 onAttach方法中进行接口绑定。

通信还有其他方法的,比如广播、静态handler等,这里就不赘述了。

end~

0 0
原创粉丝点击