Android - Fragment
1、静态添加:
Activity布局文件中使用 fragment 标签添加;
2、动态添加:
1)使用FragmentLayout 作为Fragment View容器
2)通过FragmentManager 管理 Fragment
1 2 3 4 5 | FragmentManager fm=getFragmentManager(); FragmentTransaction ft=fm.beginTransaction(); //通过ft进行 add\remove\replace\detach\hide 操作: ft.add(R.id.fragment_container, new OneFragment); ft.commit(); |
3)管理Fragment回退栈: Activity管理Fragment回退栈来保存每次Fragment事务发生的变化,如果将Fragment任务添加到回退栈,当用户点击后退按钮时,将看到上一次保存的Fragment;
replace : 如果不添加事务到回退栈,被替换的Fragment实例会被销毁;添加到回退栈,fragment实例不会被销毁,视图层次依然会被销毁(即会调用onDestroyView)
1 2 3 4 5 6 7 8 9 10 11 12 | FragmentTransaction ft=getFragmentManager().beginTransaction(); //由TwoFragment 替换 OneFragment ft.replace(R.id.fragment_container, new TwoFragment()); //将 OneFragment 放入back stack ft.addToBackStack( null ); ft.commit(); //先隐藏当前Fragment,将事务添加到回退栈:视图层次将保留; ft.hide( this ); ft.add(R.id.fragment_container, new TwoFragment()); ft.addToBackStack( null ); ft.commit(); |
3、Fragment 通信
fragment之间无法直接通信,需要通过它们所依附的Activity;
1)Activity中包含自己管理的Fragment的引用,通过引用调用Fragment public方法;
2)通过FragmentManager findFragmentByTag()或者findFragmentById()获得Fragment引用;
4、如何处理运行时配置发生变化
屏幕发生旋转时,默认的savedInstanceState会存储一些数据,包括Fragment实例;
所以Activity onCreate()中只有在savedInstanceState==null时,才进行创建Fragment实例;
5、Fragmeny与ActionBar和MenuItem集成
Fragment可以添加自己的MenuItem到Activity的ActionBar或者可选菜单中。
a、在Fragment的onCreate中调用 setHasOptionsMenu(true);
b、然后在Fragment中实现onCreateOptionsMenu
c、如果希望在Fragment中处理MenuItem的点击,也可以实现onOptionsItemSelected;当然了Activity也可以直接处理该MenuItem的点击事件。
Fragment 好文:http://blog.csdn.net/lmj623565791/article/details/37970961
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET 原生驾驭 AI 新基建实战系列:向量数据库的应用与畅想
· 从问题排查到源码分析:ActiveMQ消费端频繁日志刷屏的秘密
· 一次Java后端服务间歇性响应慢的问题排查记录
· dotnet 源代码生成器分析器入门
· ASP.NET Core 模型验证消息的本地化新姿势
· 从零开始开发一个 MCP Server!
· ThreeJs-16智慧城市项目(重磅以及未来发展ai)
· .NET 原生驾驭 AI 新基建实战系列(一):向量数据库的应用与畅想
· Ai满嘴顺口溜,想考研?浪费我几个小时
· Browser-use 详细介绍&使用文档