一种设备屏幕页面与子页面之间互相通信的方法及系统的制作方法

文档序号:10593941阅读:143来源:国知局
一种设备屏幕页面与子页面之间互相通信的方法及系统的制作方法
【专利摘要】本发明公开了一种设备屏幕页面与子页面之间互相通信的方法及系统,涉及安卓的应用程序领域。Activity向Fragment通信时:该系统的Activity端发送接口用于:发送与Fragment通信的请求命令,与Fragment通信的请求命令中包括Fragment的tag、name和data;Fragment端接收接口用于:得知Activity发送的name和data;Fragment向Activity通信时:该系统的Fragment端发送接口用于:发送与Activity通信的请求命令,与Activity通信的请求命令中包括Activity的name和data;Activity端接收接口用于:得知当前Fragment发送的name和data。本发明在Activity和Fragment之间进行相互通信时,能够精简调用过程,进而达到简化操作过程、增加开发效率的目的。
【专利说明】
一种设备屏幕页面与子页面之间互相通信的方法及系统
技术领域
[0001]本发明涉及安卓的应用程序领域,具体涉及一种设备屏幕页面与子页面之间互相通信的方法及系统。【背景技术】
[0002]安卓系统上的应用程序一般由各种页面及其中的子页面构成;通常,将显示在设备屏幕上的页面称之为Activity,将Activity上挂载的各种子页面称之为Fragment。
[0003]一个Activity可以挂载多个Fragment (例如参见图1所示,一个应用的频道浏览页面拥有新闻、财经和体育频道3个子页面)fragment的运行内容与Activity没有直接关系, 即Fragment与Activity为独立运行的,Activity可以称之为Fragment的容器。
[0004]因为安卓系统的面向对象特性,所以一个对象不能轻易访问另一个对象中的数据;因此,相对独立的频道浏览Activity无法轻易得知内部新闻Fragment加载了多少条新闻;新闻Fragment也无法轻易得知自己在频道浏览Activity排第几个位置。
[0005]在某些特殊场景下,Activity和Fragment必须要互相通信交换数据,互相通信交换数据的方式一般为:通过自行定义的调用程序使得Activity和Fragment互相得知对方的位置、并进行相应的修改(更新或删除)。
[0006]例如:参见图1所示,若频道浏览Activity想要命令新闻Fragment刷新列表,频道浏览Activity必须遍历内部已挂载的所有Fragment,找到新闻Fragment,再调用新闻 Fragment内部的函数,刷新列表。
[0007]若新闻Fragment想要将其加载的新闻条数发送至频道浏览Activity、并让频道浏览Activity更新子页面标题为“新闻(5)” fragment首先需要调用系统函数找到频道浏览 Activity、并得知自己在频道浏览Activity中排列的位置;然后调用频道浏览Activity内部的函数,更新子页面标题对应位置的文本。[00〇8]上述调用函数的程序均由开发者自行编写,若Activity和Fragment之间通信次数较少(即只在一两处位置调用),操作过程还比较容易。但是,若Activity和Fragment之间通信次数较少(即在多处位置调用),则需要用到多个调用程序,其操作过程比较冗余繁琐,不便于人们使用。
【发明内容】

[0009]针对现有技术中存在的缺陷,本发明解决的技术问题为:在Activity和Fragment 之间进行相互通信时,精简调用过程,进而达到简化操作过程,增加开发效率的目的。
[0010]为达到以上目的,本发明提供的设备屏幕页面与子页面之间互相通信的方法,该方法包括以下步骤:
[0011]Activity 向Fragment 通信时:[〇〇12]A01、Activity发送与Fragment通信的请求命令,与Fragment通信的请求命令中包括Fragment的tag、name和data;遍历Activity中挂载的所有Fragment,确定与tag对应的Fragment;
[0013]A02、与 tag 对应的Fragment 得知 Activity发送的name和data;
[0014]Fragment 向 Activity 通信时:
[0015]BO 1、Fragment发送与Activity通信的请求命令,与Activity通信的请求命令中包括Activity的name和data;根据name和data确定当前Fragment需要通信的Activity;
[0016]B02、Activity 得知当前Fragment 发送的name和data。[0〇17] 在上述技术方案的基础上,步骤AO 1中所述遍历Activity中挂载的所有Fragment 之后,还包括以下步骤:若未发现与tag对应的Fragment,则终止流程。[0〇18] 在上述技术方案的基础上,步骤B01中所述根据name和data确定当前Fragment需要通信的Activity时,还包括以下步骤:若未发现需要通信的Activity,则终止流程。
[0019]本发明提供的实现上述方法的设备屏幕页面与子页面之间互相通信的系统,该系统包括Activity端发送接口、Fragment端接收接口、Fragment端发送接口和Activity端接收接口;[〇〇2〇]在 Activity 向Fragment 通信时:[0〇21 ] Activity端发送接口用于:发送与Fragment通信的请求命令,与Fragment通信的请求命令中包括Fragment的tag、name和data;
[0022] 与tag对应的Fragment端接收接口用于:得知Activity发送的name和data;
[0023]Fragment 向 Activity 通信时:[0〇24] Fragment端发送接口用于:发送与Activity通信的请求命令,与Activity通信的请求命令中包括Activity的name和data;
[0025] Activity端接收接口用于:得知当前Fragment发送的name和data。[0〇26] 在上述技术方案的基础上,该系统还包括Fragment遍历模块,其用于:当Activity 端发送接口发送请求命令后,遍历Activity中挂载的所有Fragment,确定与tag对应的 Fragment。[00Z7]在上述技术方案的基础上,该系统还包括Activity查询模块,其用于:当Fragment 端发送接口发送请求命令后,根据name和data确定当前Fragment需要通信的Activity。
[0028]与现有技术相比,本发明的优点在于:[0〇29]本发明的系统为Activity端和Fragment端各定义了发送和接收2种接口,定义接口的Activity端和Fragment端进行通信时,只需要发送通信请求命令,S卩可自动遍历 Activity 确定 Fragment、或者自动确定 Fragment 的容器 Activity。
[0030]有鉴于此,与现有技术中需要多次调用系统函数的通信方法相比,本发明能够通过Activity端和Fragment端定义的4种接口(Activity端的发送接收2种,Fragment端的发送接收2种),即可完成Activity和Fragment之间的相互通信,其调用程序较少,显著的精简了调用过程,进而简化了操作过程,增加了开发效率,便于人们使用。【附图说明】[〇〇31 ]图1为现有技术中包含多个Fragment的Activity的示意图。【具体实施方式】
[0032]以下结合附图及实施例对本发明作进一步详细说明。
[0033]本发明实施例中的设备屏幕页面与子页面之间互相通信的方法,包括以下步骤:
[0034] Activity 向Fragment 通信时:
[0035] A01、Activity发送与Fragment通信的请求命令,与Fragment通信的请求命令中包括Fragment的tag (标签)、name (通信命令名称)和data (通信命令参数)。
[0036]自动遍历Activity中挂载的所有Fragment,确定与tag对应的Fragment (若未发现与tag对应的Fragment,则终止流程)。
[0037] A02、与tag对应的Fragment得知Activity发送的name和data,实现消息传达。 [0〇38]下面以具体应用程序的方式说明Activity向Fragment通信时的流程:
[0039]'(^:^:^又端发送:
[0040]public void sendDataToFragment(String tag,String name,0bject data); [0041 ] Fragment 端接收:
[0042]protected void onReceiveDataFromActivity(String name,0bject data);
[0043]在 Activity 端执行命令 sendDataToFragment,传入目标 Fragment 的 tag、name 和 data,代码将自动寻找目标Fragment,自动调用Fragment里的onReceiveDataFromActivity 回调。[0〇44]由此可见,使用本发明的方法的Activity向Fragment通信时,开发者只需监听 onReceiveDataFromActivity 回调即可接受来自 Activity 的通信。
[0045] Fragment 向 Activity 通信时:
[0046]B01、Fragment发送与Activity通信的请求命令,与Activity通信的请求命令中包括Activity的name和data。根据name和data自动确定当前Fragment需要通信的Activity (若未发现Activity,则终止流程)。
[0047]B02、Activity得知当前Fragment发送的name和data,实现消息传达。[0〇48]下面以具体应用程序的方式说明Fragment向Activity通信时的流程:
[0049]Fragment 端发送:
[0050]public void sendDataToActivity(String name,0bject data);[0051 ] Activity 端接收:
[0052]protected void onReceiveDataFromFragment(String tag,String name, Object data);
[0053]在Fragment端执行命令sendDataToActivity,传入name和data,代码将自动寻找容器Activity,自动调用Activity里的onReceiveDataFromFragment回调。[00M]由此可见,使用本发明的方法的Fragment向Activity通信时,开发者只需监听 onRece iveDataFromFragment 回调即可接受来自 Fragment 的通信。
[0055]本发明实施例中的实现上述方法的设备屏幕页面与子页面之间互相通信的系统, 该系统包括Activity端发送接口、Fragment遍历模块、Fragment端接收接口、Fragment端发送接口、Activity查询模块和Activity端接收接口。
[0056]在 Activity 向Fragment 通信时:[0〇57] Activity端发送接口用于:发送与Fragment通信的请求命令,与Fragment通信的请求命令中包括Fragment的tag、name和data。[0〇58] Fragment遍历模块用于:遍历Activity中挂载的所有Fragment,确定与tag对应的 Fragment〇
[0059]与tag对应的Fragment端接收接口用于:得知Activity发送的name和data。
[0060]下面以具体应用程序的方式说明本发明的设备屏幕页面与子页面之间互相通信的系统,在Activity向Fragment通信时的流程:[0061 ] Activity 端发送接口执行命令 sendDataToFragment,传入目标 Fragment 的 tag、 name和data,Fragment遍历模块将自动寻找目标Fragment,目标Fragment端接收接口自动调用Fragment 里的onReceiveDataFromActivity 回调。
[0062] Fragment 向 Activity 通信时:[0〇63] Fragment端发送接口用于:发送与Activity通信的请求命令,与Activity通信的请求命令中包括Activity的name和data。[00M] Activity查询模块用于:根据name和data确定当前Fragment需要通信的 Activity〇
[0065]Activity端接收接口用于:得知当前Fragment发送的name和data。
[0066]下面以具体应用程序的方式说明本发明实施例中的设备屏幕页面与子页面之间互相通信的系统,在Fragment向Activity通信时的流程:
[0067]Fragment 端发送接口执行命令 sendDataToActivity,传入 name 和data,Activity 查询模块自动寻找容器Activity,Activity端接收接口调用Activity里的 onRece i veDataFromFragment 回调。
[0068]本发明不局限于上述实施方式,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围之内。本说明书中未作详细描述的内容属于本领域专业技术人员公知的现有技术。
【主权项】
1.一种设备屏幕页面与子页面之间互相通信的方法,其特征在于,该方法包括以下步 骤:Activity 向Fragment 通信时:A01、Activity发送与Fragment通信的请求命令,与Fragment通信的请求命令中包括 Fragment的tag、name和data;遍历Activity中挂载的所有Fragment,确定与tag对应的 Fragment;A02、与 tag 对应的Fragment 得知 Activity 发送的name 和data;Fragment 向 Activity 通信时:B01、Fragment发送与Activity通信的请求命令,与Activity通信的请求命令中包括 Activity的name和data;根据name和data确定当前Fragment需要通信的Activity;B02、Activity 得知当前Fragment 发送的name 和data。2.如权利要求1所述的设备屏幕页面与子页面之间互相通信的方法,其特征在于:步骤 A01中所述遍历Activity中挂载的所有Fragment之后,还包括以下步骤:若未发现与tag对 应的Fragment,则终止流程。3.如权利要求1所述的设备屏幕页面与子页面之间互相通信的方法,其特征在于:步骤 B01中所述根据name和data确定当前Fragment需要通信的Activity时,还包括以下步骤:若 未发现需要通信的Activity,则终止流程。4.一种实现权利要求1至3任一项所述方法的设备屏幕页面与子页面之间互相通信的 系统,其特征在于:该系统包括Activity端发送接口、Fragment端接收接口、Fragment端发 送接口和Activity端接收接口;在 Activity 向Fragment 通信时:Activity端发送接口用于:发送与Fragment通信的请求命令,与Fragment通信的请求 命令中包括Fragment的tag、name和data;与tag对应的Fragment端接收接口用于:得知Activity发送的name和data;Fragment 向 Activity 通信时:Fragment端发送接口用于:发送与Activity通信的请求命令,与Activity通信的请求 命令中包括Activity的name和data;Activity端接收接口用于:得知当前Fragment发送的name和data。5.如权利要求4所述的设备屏幕页面与子页面之间互相通信的系统,其特征在于:该系 统还包括Fragment遍历模块,其用于:当Activity端发送接口发送请求命令后,遍历 Activity中挂载的所有Fragment,确定与tag对应的Fragment。6.如权利要求4所述的设备屏幕页面与子页面之间互相通信的系统,其特征在于:该系 统还包括Activity查询模块,其用于:当Fragment端发送接口发送请求命令后,根据name和 data确定当前Fragment需要通信的Activity。
【文档编号】G06F9/54GK105955832SQ201610315911
【公开日】2016年9月21日
【申请日】2016年5月12日
【发明人】霍启圣
【申请人】武汉斗鱼网络科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1