Fragment的产生与介绍
Android运行在各种各样的设备中,有小屏幕的手机,超大屏的平板甚至电视。针对屏幕尺寸的差距,很多情况下,都是先针对手机开发一套App,然后拷贝一份,修改布局以适应平板神马超级大屏的。难道无法做到一个App可以同时适应手机和平板么,当然了,必须有啊。Fragment的出现就是为了解决这样的问题。你可以把Fragment当成Activity的一个界面的一个组成部分,甚至Activity的界面可以完全有不同的Fragment组成,更帅气的是Fragment拥有自己的生命周期和接收、处理用户的事件,这样就不必在Activity写一堆控件的事件处理的代码了。更为重要的是,你可以动态的添加、替换和移除某个Fragment。
Fragment的生命周期
Fragment必须是依存与Activity而存在的,因此Activity的生命周期会直接影响到Fragment的生命周期。官网这张图很好的说明了两者生命周期的关系:
下面介绍下Fragment多层嵌套情况下如何解决方法调用的问题
可能会出现同一个Activity中
对象1: A fragment
对象2:B fragment 中 a listview 或 a viewadapter
交互情况:B fragment 中的某一界面 获取到信息后(可能是网络信息等),传递给A fragment 或者 A fragment 处理过事件后又要通知B fragment 下的界面做出改变。
方案1
调用方法 通过中间人 Activity
在B fragment 内 通过中间人 Activity 获取到 A fragment 对象 调用A fragment 中的方法
弊端: 当有很多层时 这种中间人的获取就变成了多层中间人 ,需要处理中间人很多次
例如:想要调用在B fragment 中的 viewpager 的list 中的 pager类父类 的子类对象中的方法时
1,子类对象需要重写该方法
2,需要将父类定义该方法
3,需要将B fragment 中找到list 中的子类对象并调用该方法
4,需要在A Fragment 中找到 Bfragment 对象 调用该方法
由此可见 当嵌套方式越复杂, 这个方法需要处理的 层次关系就越多。。。所以采用方案2
方案2
接口方式
在A fragment 中 定义接口
这里展示案例 通过定义接口的方式在Afragment 调用B fragment 的方法:
public class A_Fragment extends BaseFragment { private onSwitchpaperListener onSwitchpaperListener; //定义接口和接口方法 public interface onSwitchpaperListener{ void switchpaper(int i); } //对外提供一个设置监听的方法。 public void setOnSwichtpaerListener(onSwitchpaperListener listener){ this.onSwitchpaperListener=listener; } @Override public void intiEvent() { //这这之前处理了很多逻辑和信息后需要将消息通过Afragment 传递给B了 if(onSwitchpaperListener!=null){ onSwitchpaperListener.switchpaper(position); }else { } } }
而Bfragment 只需要 实现接口并 重写接口方法 即可被A fragment 调用
在B fragment 中的 许多莫名嵌套内的类中:
mainActivity.getAFragment().setOnSwichtpaerListener(new Slidingleft_Fragment.onSwitchpaperListener() { @Override public void switchpaper(int i) { BaseCenterPaper currentPaper= baseCenterPaperList.get(i); tv_title.setText(lists.get(i).getTitle()); //先移除 fl.removeAllViews(); currentPaper.initData(); fl.addView(currentPaper.getRoot()); } });
以上所述是小编给大家介绍的Fragment 多层嵌套方法调用问题的解决方案,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对小牛知识库网站的支持!
本文向大家介绍Android Fragment多层嵌套重影问题的解决方法,包括了Android Fragment多层嵌套重影问题的解决方法的使用技巧和注意事项,需要的朋友参考一下 1解决bug的思想: //step1:当bug被发现(排除极低偶然性,单次性,开发工具导致) //step2:根据经验判断bug的重现场景,多次测试,直到精准的定位bug //step3:根据重现场景找到对应的代码 //
本文向大家介绍Android 中 Fragment 嵌套 Fragment使用存在的bug附完美解决方案,包括了Android 中 Fragment 嵌套 Fragment使用存在的bug附完美解决方案的使用技巧和注意事项,需要的朋友参考一下 自从Android3.0引入了Fragment之后,使用Activity去嵌套一些Fragment的做法也变得更加流行,这确实是Fragment带来的一些优
本文向大家介绍C#中WebBrowser.DocumentCompleted事件多次调用问题解决方法,包括了C#中WebBrowser.DocumentCompleted事件多次调用问题解决方法的使用技巧和注意事项,需要的朋友参考一下 关于DocumentCompleted事件,MSDN给出的解释是在文档加载完毕后执行,但是在我的程序中DocumentCompleted却被多次调用,查了一下资料,
本文向大家介绍Android利用Gson解析嵌套多层的Json的简单方法,包括了Android利用Gson解析嵌套多层的Json的简单方法的使用技巧和注意事项,需要的朋友参考一下 首先先讲一个比较简单点的例子(最简单的我就不讲啦,网上很多),帮助新手理解Gson的使用方法: 比如我们要解析一个下面这种的Json: 首先我们需要定义一个序列化的Bean,这里采用内部类的形式,看起来会比较清晰一些:
本文向大家介绍详解ASP.NET提取多层嵌套json数据的方法,包括了详解ASP.NET提取多层嵌套json数据的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了ASP.NET利用第三方类库Newtonsoft.Json提取多层嵌套json数据的方法,具体例子如下。 假设需要提取的json字符串如下: 先引用命名空间: 可以把上面的json字符串看成一个对象,只要编写对应的类即可(如果
本文向大家介绍用Promise解决多个异步Ajax请求导致的代码嵌套问题(完美解决方案),包括了用Promise解决多个异步Ajax请求导致的代码嵌套问题(完美解决方案)的使用技巧和注意事项,需要的朋友参考一下 问题 前端小同学在做页面的时候,犯了个常见的错误:把多个Ajax请求顺序着写下来了,而后面的请求,对前面请求的返回结果,是有依赖的。如下面的代码所示: 以上代码有两个问题: *首先就是执行