Fragment 使用总结
1. 要深刻理解Fragment 的生命周期
2. Fragment.getActivity()并不能保证非空。
3.如果在Fragment中有异步的回调, 特别要注意此时Fragment 是否还attached 在Activity中,可以调用isVisible()来判断
4. Layout 中添加fragment 与代码中添加Fragment 的区别:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/register_container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" > <!---->
<fragment
android:layout_width="match_parent"
android:layout_height="match_parent"
class="com.xxx.xxxx.fragment.RegisterBasicInfoFragment" /> </LinearLayout>
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.setContentView(R.layout.register); FragmentTransaction ft = this.getSupportFragmentManager().beginTransaction();
RegisterBasicInfoFragment bf = new RegisterBasicInfoFragment(); ft.replace(R.id.register_container, bf).commit();
}
前者,register_container 被replace 成另外一个Fragment的时候,旧的Fragment不会走销毁流程onPause->onStop->onDetroyView;
但是后者,会走销毁流程。
5. 需要传入参数的Fragment, 要用静态的newInstance(.....)方式来获得实例,而不要直接new, 然后用setXXX 的方式。
public static RegisterDetailInfoFragment newInstance(String userName, String password) {
RegisterDetailInfoFragment f = new RegisterDetailInfoFragment();
Bundle args = new Bundle();
args.putString("userName", userName);
args.putString("password", password);
f.setArguments(args);
return f;
}
你可能会说,为啥不直接用有参数的构造函数呢?原因是,某些情况,Fragment 要重新构建,系统不会认识的有参数的构造函数,只会调用默认无参构造函数;而用静态newInstance这种方式,你要在里面把参数放到setArguments当中,系统在onSavedInstanceState的时候,会把你的参数持久化,重建的时候,参数值就不会丢失了。
Fragment 使用总结的更多相关文章
- 浅谈 Fragment 生命周期
版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 源码:AndroidDemo/Fragment 文中如有纰漏,欢迎大家留言指出. Fragment 是在 Android 3.0 中 ...
- 札记:Fragment基础
Fragment概述 在Fragment出现之前,Activity是app中界面的基本组成单位,值得一提的是,作为四大组件之一,它是需要"注册"的.组件的特性使得一个Activit ...
- EventBus实现activity跟fragment交互数据
最近老是听到技术群里面有人提出需求,activity跟fragment交互数据,或者从一个activity跳转到另外一个activity的fragment,所以我给大家介绍一个开源项目,EventBu ...
- Android:Activity+Fragment及它们之间的数据交换.
Android:Activity+Fragment及它们之间的数据交换 关于Fragment与Fragment.Activity通信的四种方式 比较好一点的Activity+Fragment及它们之间 ...
- Android中Fragment和ViewPager那点事儿(仿微信APP)
在之前的博文<Android中使用ViewPager实现屏幕页面切换和引导页效果实现>和<Android中Fragment的两种创建方式>以及<Android中Fragm ...
- Android开发学习—— Fragment
#Fragment* 用途:在一个Activity里切换界面,切换界面时只切换Fragment里面的内容* 生命周期方法跟Activity一致,可以理解把其为就是一个Activity* 定义布局文件作 ...
- Android中Fragment与Activity之间的交互(两种实现方式)
(未给Fragment的布局设置BackGound) 之前关于Android中Fragment的概念以及创建方式,我专门写了一篇博文<Android中Fragment的两种创建方式>,就如 ...
- Android中Fragment的两种创建方式
fragment是Activity中用户界面的一个行为或者是一部分.你可以在一个单独的Activity上把多个Fragment组合成为一个多区域的UI,并且可以在多个Activity中再使用.你可以认 ...
- Android Fragment 剖析
1.Fragment如何产生?2.什么是Fragment Android运行在各种各样的设备中,有小屏幕的手机,超大屏的平板甚至电视.针对屏幕尺寸的差距,很多情况下,都是先针对手机开发一套App,然后 ...
- ILJMALL project过程中遇到Fragment嵌套问题:IllegalArgumentException: Binary XML file line #23: Duplicate id
出现场景:当点击"分类"再返回"首页"时,发生error退出 BUG描述:Caused by: java.lang.IllegalArgumentExcep ...
随机推荐
- linux shell编程进阶学习(转)
第一节:基础 ls -lh ——可以用户友好的方式看到文件大小 file 文件名 ——查看文件类型 stat 文件名 ——查看文件当前状态 man 命令/函数名 ——查看详细的帮助文档 man中看某 ...
- 安装和配置Apache服务器(上)
首先,安装软件分安装版和压缩版,压缩版也就是我们现在所说的绿色安装包.安装板和压缩版的区别就是,安装板在安装的时候就已经自动给你配置好环境,压缩版安装之后还要自己配置环境.自己配置环境也是有好处的,知 ...
- Maven配置setting.xml值Mirror与Repository区别
1 Repository(仓库) 1.1 Maven仓库主要有2种: remote repository:相当于公共的仓库,大家都能访问到,一般可以用URL的形式访问 local repository ...
- curl_init 接口
<?php// +----------------------------------------------------------------------// | ThinkPHP [ WE ...
- myEtherWallet在线钱包的使用
https://www.myetherwallet.com/#generate-wallet myEtherWallet是一款在线钱包,当你不想安装类似metamask这样的插件时,可以选择使用它 1 ...
- maven项目中,lib目录下有自己私有的包,则需要配置一下代码,然后进行打包
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compi ...
- Docker学习3-CentOS安装Docker
CentOS安装:Docker-ce ( Docker Community Edition ) 第一步:$ sudo yum install -y yum-utils device-mapper-pe ...
- P1983 车站分级
题目描述 一条单向的铁路线上,依次有编号为 1, 2, …, n 的 n 个火车站.每个火车站都有一个级别,最低为 1 级.现有若干趟车次在这条线路上行驶,每一趟都满足如下要求:如果这趟车次停靠了火车 ...
- DQN(Deep Reiforcement Learning) 发展历程(二)
目录 动态规划 使用条件 分类 求解方法 参考 DQN发展历程(一) DQN发展历程(二) DQN发展历程(三) DQN发展历程(四) DQN发展历程(五) 动态规划 动态规划给出了求解强化学习的一种 ...
- Linux常用系统信息查看命令
[转]http://yulans.cn/linux/linux%E5%B8%B8%E7%94%A8%E7%B3%BB%E7%BB%9F%E4%BF%A1%E6%81%AF%E6%9F%A5%E7%9C ...