Android中的Fragment
来源:互联网 发布:手机动漫主题软件 编辑:程序博客网 时间:2024/05/29 13:21
Fragment 表示 Activity 中的行为或用户界面部分。您可以将多个片段组合在一个 Activity 中来构建多窗格 UI,以及在多个 Activity 中重复使用某个片段。您可以将片段视为 Activity 的模块化组成部分,它具有自己的生命周期,能接收自己的输入事件,并且您可以在 Activity 运行时添加或移除片段
片段必须始终嵌入在 Activity 中,其生命周期直接受宿主 Activity 生命周期的影响。 例如,当 Activity 暂停时,其中的所有片段也会暂停;当 Activity 被销毁时,所有片段也会被销毁。 不过,当 Activity 正在运行(处于已恢复生命周期状态)时,您可以独立操纵每个片段,如添加或移除它们。 当您执行此类片段事务时,您也可以将其添加到由 Activity 管理的返回栈 — Activity 中的每个返回栈条目都是一条已发生片段事务的记录。 返回栈让用户可以通过按返回按钮撤消片段事务(后退)。
一、生命周期
这里写代码片
二、编写Fragment
@Override public void onViewCreated(View view, Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); } @Nullable @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return inflater.inflate(R.layout.fragment_store, container, false); }
三、从布局文件生成一个Fragment
<!--父布局的id必须有--> <RelativeLayout android:id="@+id/store_container2" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight="1" android:layout_margin="10dp" android:background="#cccccc"> <!--id若没有采用父布局的,name为类名--> <fragment android:id="@id/store_container2" android:tag="store_container2" android:name="com.netease.study.ui.fragment.StoreFragment" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_centerInParent="true" tools:layout="@layout/fragment_store"> </fragment> </RelativeLayout>
注:每个片段都需要一个唯一的标识符,重启 Activity 时,系统可以使用该标识符来恢复片段(您也可以使用该标识符来捕获片段以执行某些事务,如将其移除)。 可以通过三种方式为片段提供 ID:为 android:id 属性提供唯一 ID。为 android:tag 属性提供唯一字符串。如果您未给以上两个属性提供值,系统会使用容器视图的 ID。
四、动态生成一个Fragment
// new Fragment fragment = new StoreFragment(); // 获取Fragment Manager FragmentManager fragmentManager = getFragmentManager(); // 开始一个事务 FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); // 事务包含的操作 fragmentTransaction.add(containerId, fragment); // 添加一个Fragment fragmentTransaction.commit(); // 提交事务
五、参数的传递
// 参数 Bundle args = new Bundle(); args.putString("name", "store with name"); // new Fragment fragment = new StoreFragmentWithArg(); // 设置参数 fragment.setArguments(args); // 获取Fragment Manager FragmentManager fragmentManager = getFragmentManager(); // 开始一个事务 FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); // 事务包含的操作 fragmentTransaction.add(R.id.store_container, fragment); // 添加一个Fragment fragmentTransaction.commit(); // 提交事务 // 获取参数,获取名字 Bundle args = getArguments(); name = args != null ? args.getString("name") : null;
六、Fragment Manager
// 开始一个事务FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();// 事务包含的操作fragmentTransaction.replace(R.id.store_container1, fragmentToReplace, "replace"); // 替代一个FragmentfragmentTransaction.add(R.id.store_container2, fragmentToAdd, "add2"); // 添加一个Fragment fragmentTransaction.addToBackStack(null); // 添加进栈 fragmentTransaction.commit(); // 提交事务
七、与Activity交互
定义一个接口
在Activity实现这个接口
在Fragment的onAttache方法里接受数据
相关资料:https://developer.android.com/guide/components/fragments.html
0 0
- Android中的Fragment
- android 中的 ViewPager+ Fragment
- android 中的 ViewPager+ Fragment
- android中的Fragment
- android中的Fragment
- Android中的Fragment使用
- android 中的 ViewPager+ Fragment
- Android中的Fragment
- android 中的 ViewPager+ Fragment
- Android中的Fragment
- android 中的 ViewPager+ Fragment
- Android中的Fragment详解
- Android 中的 ViewPager+ Fragment
- Android中的Fragment
- Android中的fragment
- android中的Fragment
- 认识Android中的Fragment
- android中的fragment
- APNS 学习总结(三)
- 仅当使用了列的列表,并且 IDENTITY_INSERT 为 ON 时
- MySQL里用一个表的数据更新另一个表
- jquery显示和隐藏
- Android So简单加固
- Android中的Fragment
- LaTex-merge pdfs into one file
- Linux串口编程
- 欢迎使用CSDN-markdown编辑器
- linux umount 提示"device is busy" 终极解决
- 谈谈NoSQL——非关系型数据库概览
- 如何把ubuntu系统变成空白的桌面什么都没有
- vim 修改文件出现错误“E45: 'readonly' option is set (add ! to override)”
- 如何让EditText焦点不被键盘挡住