Fragment基本介绍
2024-08-28 16:24:55
1.生命周期
onCreateView() :创建视图
onActivityCreate():activity创建完成的时候调用
onDestoryView():销毁视图
onDetach():与activity解除绑定
2.静态使用
2.1 继承fragment(android.app.Fragment)
2.2 直接在布局文件中使用
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"> <fragment
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/fragment1"
android:name="example.com.fragmentdemo.OneFragment"
/> </RelativeLayout>
3.动态使用
步骤:
1.创建fragment
2.通过getFragmentManager()方法得到FragmentManager
3.开启一个事务,beginTransaction()
4.添加、移除、替换、隐藏、显示fragment,add/remove/replace/hide/show
5.提交事务,commit();
manager.beginTransaction().add(R.id.fl,twoFragment).commit();
如果要实现类似于返回栈的效果,在commit()前 调用addToBackStack()方法
manager=getFragmentManager();
manager.beginTransaction().add(R.id.fl,twoFragment).addToBackStack(null).commit();
replace()方法会使fragment视图销毁 执行onpause()/onStop()/onDestoryView()
remove()方法会使fragment销毁 执行onpause()/onStop()/onDestoryView()/onDesdory()/onDecath()
hide()/show()不会执行其他的生命周期
锁屏 onPause()/onStop() 锁屏恢复:onStart()/onResume()
4.携带数据
1.在Fragment中创建newInstance方法,使Fragment携带参数
public static OneFragment newInstance(String txt){
OneFragment oneFragment=new OneFragment();
Bundle bundle=new Bundle();
bundle.putString("param",txt);
oneFragment.setArguments(bundle);
return oneFragment;
}
2.声明Fragment
oneFragment=OneFragment.newInstance("oneFragment");
3.在Fragment的onCreateView()中获取参数
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {
Log.d(TAG, "onCreateView: ");
View view=inflater.inflate(R.layout.fragment_one,container,false);
if(getArguments()!=null){
Bundle bundle=getArguments();
String str= bundle.getString("param");
Log.e("OneFragment","onCreateView(OneFragment.java:48):"+str);
}
return view;
}
最新文章
- [deviceone开发]-openPage的动画效果示例
- GJM : 中断被Socket.Accept阻塞的线程
- Javascript 面向对象编程初探(一)--- 封装
- flex sdk中mx_internal function getTextField() 这种函数如何调用?
- matlab实现hog特征
- iPad开发(Universal Applications)
- Intent实现Activity组件之间的通信
- 编译流程,C开发常见文件类型名
- 将Xml或Json生成类的最简单方式
- poj 2594 Treasure Exploration(最小路径覆盖+闭包传递)
- cocos2dx 读取json及解析
- 关于autoconf
- ASP.NET Core介绍
- 章节四、1-if条件语句
- python基础之IO编程
- 基于React 的前端UI开发框架 及与Electron 的结合 https://cxjs.io/
- BZOJ.3938.Robot(李超线段树)
- 完美解决";Encountered an NTFS Volume with a logfile ...";
- python进程池爬取下载美女图片(xpath)--lowbiprogrammer
- ntpdate 正确的做法