Android官方Training笔记:Fragment之间通过Activity通信

预备知识

  尽管fragment的实现是独立于activity的,可以被用于多个activity,但是每个activity所包含的是同一个fragment的不同的实例。

  Fragment可以调用getActivity()方法很容易的得到它所在的activity的对象,然后就可以查找activity中的控件们(findViewById())。例如:

ViewlistView =getActivity().findViewById(R.id.list);

  同样的,activity也可以通过FragmentManager的方法查找它所包含的frament们。例如:

ExampleFragment fragment =(ExampleFragment)getFragmentManager().findFragmentById(R.id.example_fragment


来源: <http://blog.csdn.net/niu_gao/article/details/7182979>// 必须感谢这位作者!! 没有他的文章我是绝对理解不了的


之所以会看不懂是官方Training忽略了很多代码,现在将官方的代码流程整理一下

首先需要理解的是,官方代码在做一个新闻客户端,就是左边是新闻标题,点击之后右边显示新闻内容   (或者你能理解的话,理解成网易新闻客户端那种也没问题)

准备工作

Activity显示HeadlinesFragment (就是有内部接口的那一个Fragment)  <--官方文档没说明过,也没写出来

显示时自动调用onAttach,如果Activity实现了内部接口,就通过向下转型,获得实现后的接口传给mCallback  

(ps:onAttach的形参activity就是显示Fragment的父activity)


上面这些只是准备步骤,下面是实际操作

当用户点击了HeadlinesFragment的项目时,会自动调用onItemSelect(),我们这时候想看到的当然是出现新闻内容(新建一个Fragment显示内容),但是因为Fragment之间是不能直接进行通信的,那么这里就调用mCallback.onAriticleSelected()方法(由于上面的准备工作,mCallback已经指向了Activity实现的接口咯),让Activity去启动一个Fragment (所以要做什么都写在这个接口方法里)

就是说:

用户点击FragmentA,调用了回调函数onItemSelect() 
         
回调函数开始运作: 调用mcallback.onArticleSelcet() (Activity实现了这个接口,Activity通知FragmentB开始工作) 
         
 Activity显示FragmentB


参考源码  (这个源码做了进一步简化,使用按钮代替onItenSelect())

http://download.csdn.net/detail/fulvaz/7930563


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

这时候再回去看一遍Training的内容,是不是觉得好理解了很多呢?


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值