Android官方开发文档Training系列课程中文版:使用Fragment构建动态UI之与其它Fragment通信

原文地址:http://android.xsoftlab.net/training/basics/fragments/communicating.html

为了可以重复使用Fragment UI组件,你应该将fragment构建为一个完整的独立的模块化组件,并且它可以定义自己的布局和行为习惯。你只要定义了一次这类可复用的fragment,你就可以通过activity与之相关联,然后使用应用程序逻辑与之建立连接以实现完整的复合型UI组件。

经常你会希望一个fragment对象可以和其它的fragment对象进行通信,举个例子,基于用户的事件更改内容。所有的fragment之间的通信都是通过它们关联的activity进行的。两个fragment对象应该永远不要直接通信。

定义一个接口

为了使fragment与其关联的activity建立通信渠道,你可以在fragment中定义一个接口,然后让activity实现它。这个fragment对象可以在生命周期方法onAttach中取得这个接口的实现,然后就可以调用这个接口的方法与其关联的activity进行通信了。

下面是fragment与activity通信的例子:

public class HeadlinesFragment extends ListFragment {OnHeadlineSelectedListener mCallback;// Container Activity must implement this interfacepublic interface OnHeadlineSelectedListener {public void onArticleSelected(int position);}@Overridepublic void onAttach(Activity activity) {super.onAttach(activity);// This makes sure that the container activity has implemented// the callback interface. If not, it throws an exceptiontry {mCallback = (OnHeadlineSelectedListener) activity;} catch (ClassCastException e) {throw new ClassCastException(activity.toString()+ " must implement OnHeadlineSelectedListener");}}...
}

现在fragment就可以通过调用OnHeadlineSelectedListener接口的具体实现对象mCallback的onArticleSelected方法(或者接口中的其它方法)给activity传送消息了。

举个例子,下面这个方法会在用户点击列表条目的时候被调用,然后fragment会使用回调接口将事件传送给它所附属的activity。

实现接口

为了可以从fragment中接收事件回调,那么包含fragment的activity必须实现在fragment中定义的接口。

举个例子,下面是上面例子中的在activity中的接口实现:

public static class MainActivity extends Activityimplements HeadlinesFragment.OnHeadlineSelectedListener{...public void onArticleSelected(int position) {// The user selected the headline of an article from the HeadlinesFragment// Do something here to display that article}
}

发送消息给fragment

宿主activity可以通过findFragmentById()方法获得fragment的对象,然后再发送消息到fragment中。可以直接调用fragment的public方法发送消息。

举个例子,想象上面例子中的activity可能还包含有其它的fragment,这些fragment可能被用来显示上面回调方法返回的数据。在这个例子中,activity会将从回调方法中接收到的信息传递给其它的fragment,其它的fragment会将这些信息显示出来:

public static class MainActivity extends Activityimplements HeadlinesFragment.OnHeadlineSelectedListener{...public void onArticleSelected(int position) {// The user selected the headline of an article from the HeadlinesFragment// Do something here to display that articleArticleFragment articleFrag = (ArticleFragment)getSupportFragmentManager().findFragmentById(R.id.article_fragment);if (articleFrag != null) {// If article frag is available, we're in two-pane layout...// Call a method in the ArticleFragment to update its contentarticleFrag.updateArticleView(position);} else {// Otherwise, we're in the one-pane layout and must swap frags...// Create fragment and give it an argument for the selected articleArticleFragment newFragment = new ArticleFragment();Bundle args = new Bundle();args.putInt(ArticleFragment.ARG_POSITION, position);newFragment.setArguments(args);FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();// Replace whatever is in the fragment_container view with this fragment,// and add the transaction to the back stack so the user can navigate backtransaction.replace(R.id.fragment_container, newFragment);transaction.addToBackStack(null);// Commit the transactiontransaction.commit();}}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/479288.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AI框架你只会调包,这种想法很危险!

深度学习神经网络正步入成熟,而深度学习框架目前众多,大都可以在图像识别、手写识别、视频识别、语音识别、目标识别和自然语言处理等诸多领域大显身手。深度学习框架平台占据人工智能产业生态的核心地位,具有统领产业进步节奏、带动终端场景…

Docker镜像大小

都说容器大法好,可是假设没有Docker镜像,Docker该是多无趣啊。 是否还记得第一个接触Docker的时候,你从Docker Hub下拉的那个镜像呢?在那个处女镜像的基础上。你执行了容器生涯的处女容器。镜像的基石作用已经非常明显。在Docker…

论文浅尝 | 机器阅读理解中常识知识的显式利用

论文笔记整理:吴林娟,天津大学硕士,自然语言处理方向。链接:https://arxiv.org/pdf/1809.03449.pdf动机机器阅读理解(MRC)和人类进行阅读理解之间还存在差距,作者认为主要体现在对于数据的需求和噪声鲁棒性上&#xff…

深度学习在美团配送ETA预估中的探索与实践

1.背景 ETA(Estimated Time of Arrival,“预计送达时间”),即用户下单后,配送人员在多长时间内将外卖送达到用户手中。送达时间预测的结果,将会以”预计送达时间”的形式,展现在用户的客户端页面…

在AndroidStudio中配置Gradle进行 “动态编译期间,根据远程服务器地址 ,生成多类安装包”

原文地址:http://www.cnblogs.com/vir56k/p/4763810.html 需求: 在产品开发中,经常需要发布各个版本,每个版本的服务器地址有不同的服务器地址。比如 开发 服务器使用 192.168.1.232服务器,测试 服务器使用 192.168.1.…

中科院博士整理的机器学习算法知识手册,完整 PDF 开放下载!

分享一份中科院博士总结的机器学习算法知识手册,文章已打包成压缩文件,感兴趣的同学可下载交流。文件包含了:机器学习基础,监督学习方法、非监督学习方法,Python数据科学和深度学习等相关知识,若初学者在自…

NLP算法落地相关的应用场景以及业界最新动态

1 百度NLP十年技术积累,最新发布5款产品,公布两大计划

论文浅尝 | 通过共享表示和结构化预测进行事件和事件时序关系的联合抽取

论文笔记整理:邓淑敏,浙江大学在读博士,研究方向为低资源条件下知识图谱自动化构建关键技术研究。Rujun Han, Qiang Ning, Nanyun Peng. Joint Event and Temporal Relation Extractionwith Shared Representations and Structured Predictio…

Android官方开发文档Training系列课程中文版:数据存储之键值对序列存储

原文地址:http://android.xsoftlab.net/training/basics/data-storage/index.html 引言 大多数的安卓APP需要保存数据,即使仅仅存储在onPause状态下的信息,这样的话,用户的进度信息就不会被丢失。大多数重量级的APP还需要保存用…

研发团队资源成本优化实践

背景 工程师主要面对的是技术挑战,更关注技术层面的目标。研发团队的管理者则会把实现项目成果和业务需求作为核心目标。实际项目中,研发团队所需资源(比如物理机器、内存、硬盘、网络带宽等)的成本,很容易被忽略&…

抖音算法推荐机制详解(科普向)

本文转载自公众号“夕小瑶的卖萌屋”,专业带逛互联网算法圈的神操作 -----》我是传送门 关注后,回复以下口令: 回复【789】 :领取深度学习全栈手册(含NLP、CV海量综述、必刷论文解读) 回复【入群】&#xf…

论文浅尝 | 融合多粒度信息和外部语言知识的中文关系抽取

论文笔记整理:吴涵,天津大学硕士,研究方向:自然语言处理Paper:https://www.aclweb.org/anthology/P19-1430/Code:https://github.com/thunlp/Chinese_NRE引入中文NER问题在很大程度上取决于分词的效果,所以在中文NER问…

Android官方开发文档Training系列课程中文版:数据存储之文件存储

原文地址:http://android.xsoftlab.net/training/basics/data-storage/files.html Android使用的文件系统和其它平台的磁碟式文件系统很相似。这节课描述了如何通过FileAPI在Android文件系统上进行读取文件和写入文件的操作。 一个File对象适合被用来按照从头到尾…

智能写作

6.2万字报告剖析「智能写作」全貌,从落地产品看NLP商业化突破:

论文拒稿的评价可以有多狠?

文 | 自然卷知乎自古严师出高徒,“天将降大任于是人也,必先苦其心志,劳其筋骨……”。然而,这并不能作为审稿人走向“键盘侠”之路的理由!让我们这些卑微投稿人心里真是好凉凉!ಥ_ಥ 大家来看看&#xff0c…

全链路压测自动化实践

背景与意义 境内度假是一个低频、与节假日典型相关的业务,流量在节假日较平日会上涨五到十几倍,会给生产系统带来非常大的风险。因此,在2018年春节前,我们把整个境内度假业务接入了全链路压测,来系统性地评估容量和发现…

论文浅尝 | GMNN: Graph Markov Neural Networks

论文笔记整理:吴锐,东南大学硕士研究生,研究方向为自然语言处理来源:ICML 2019链接:http://proceedings.mlr.press/v97/qu19a/qu19a.pdf问题定义弱监督下的在关系数据中的对象分类。形式化地来说,给定一个图…

Android官方开发文档Training系列课程中文版:数据存储之数据库存储

原文地址:http://android.xsoftlab.net/training/basics/data-storage/databases.html 对于保存重复的结构化的数据最理想的方式就是存到数据库,比如联系人信息。这节课假定你有SQL数据库基础,会帮助你开始学习Android上的SQLite数据库。你将…

五笔字根表口诀的通俗易懂讲解

五笔字根表口诀的通俗易懂讲解 从上面五笔学习导图,我们不难看出,五笔只包含两个部分,一是独立字。二是字根字。 1 先来讲解独立字。 独立字就是不用字根就可以输出的汉字,独立字包含一级简码,按键字两种。…

论文浅尝 | 基于知识图谱难度可控的多跳问题生成

论文笔记整理:谭亦鸣,东南大学博士生,研究兴趣:知识图谱问答。来源:ISWC 2019链接:https://link.springer.com/content/pdf/10.1007%2F978-3-030-30793-6_22.pdf本文提出一个end2end神经网络模型以知识图谱…