现在的位置: 首页 > 操作系统 > 正文

Android中Fragment与Activity之间实现交互两种方式

2020年02月12日 操作系统 ⁄ 共 1453字 ⁄ 字号 评论关闭

(未给Fragment的布局设置BackGound)

之前关于Android中Fragment的概念以及创建方式,我专门写了一篇文章《Android中Fragment的两种创建方式》,就如何创建Fragment混合布局做了详细的分析,今天就来详细说道说道Fragment与宿主Activity之间是如何实现数据交互的。

我们可以这样理解,宿主Activity中的Fragment之间要实现信息交互,就必须通过宿主Activity,Fragment之间是不可能直接实现信息交互的。

Fragment与Fragment或者说与Activity(将部分Fragment包含的的布局直接部署在Activity中)的数据交互我个人总结了两种实现方式:

(1)通过Bundle传参,从而实现Fragment之间的数据交互

(2)通过在Fragment内部定义一个回调接口,并需要宿主Activity实现它。当Activity通过接口接收到回调时,可以在必要时与布局中的其它Fagment共享信息。

在开始两种实现方式之前,先向大家介绍并演示其中一些个性化参数不同设置后的效果,之前向大家介绍过要管理宿主Activity中的Fragment,必须得到FragmentManager(碎片管理),而FragmentManager要实现对Fragment的增删改换等操作(事务),则必须启用FragmentTransaction,这里主要向大家演示添加FragmentTransaction.addToBackStack方法前后以及在未给Fragment设置BackGround的情况下使用FragmentTransaction.add与replace的不同效果,更加详细的方法介绍以及用法请大家参照API详细了解。

未设置FragmentTransaction.addToBackStack方法演示效果(打开多层后,按回退,直接退出程序):

设置FragmentTransaction.addToBackStack方法演示效果(这里没有设置监听后台栈变化的监听器进行判断处理):

貌似看不出差别,其实在按回退键时,这个是根据打开的顺序,逐个退出

未给Fragment设置BackGround的情况下使用FragmentTransaction.add的演示效果:

注意啦注意啦,这里着重声明的是未给右侧Fragment的布局设置BackGound的情况,如果设置的BackGound,那么实现效果和replace没有差别,这也是今天超时这么多的主要原因

不同的实现效果大家都看到了,我们开始演示实现代码:

我们使用的是Android中Fragment的两种创建方式中(通过java代码将fragment添加到宿主Activity中)的布局文件,布局文件代码请参考 http://www.xuebuyuan.com/Linux/2016-12/138612.htm

(1)通过Bundle传参

第一步:右侧Fragment对应的java代码RightFragment.java:

以上就上有关Android中Fragment与Activity之间实现交互两种方式的相关介绍,要了解更多Android Fragment,AndroidActivity,Android中Fragment与Activity之间实现交互两种方式,编程,Linux编程,Linux Shell,Android,Android教程,JAVA,C语言,Python,HTML5内容请登录学步园。

抱歉!评论已关闭.