古之立大事者,不惟有超世之才,亦必有坚忍不拔之志。这篇文章主要讲述Android--Fragment基本介绍相关的知识,希望能为你提供帮助。
android是在Android 3.0 (API level 11)開始引入Fragment的。
能够把Fragment想成Activity中的模块,这个模块有自己的布局。有自己的生命周期,单独处理自己的输入,在Activity执行的时候能够载入或者移除Fragment模块。
能够把Fragment设计成能够在多个Activity中复用的模块。
当开发的应用程序同一时候适用于平板电脑和手机时,能够利用Fragment实现灵活的布局,改善用户体验。
如图:
文章图片
Fragment的生命周期由于Fragment必须嵌入在Acitivity中使用,所以Fragment的生命周期和它所在的Activity是密切相关的。
假设Activity是暂停状态,当中全部的Fragment都是暂停状态;假设Activity是stopped状态。这个Activity中全部的Fragment都不能被启动。假设Activity被销毁,那么它当中的全部Fragment都会被销毁。
可是,当Activity在活动状态,能够独立控制Fragment的状态,比方加上或者移除Fragment。
当这样进行fragment transaction(转换)的时候,能够把fragment放入Activity的back stack中。这样用户就能够进行返回操作。
文章图片
能够看到Fragment比Activity多了几个额外的生命周期回调方法:
onAttach(Activity)
当Fragment与Activity发生关联时调用。
onCreateView(LayoutInflater, ViewGroup,Bundle)
创建该Fragment的视图
onActivityCreated(Bundle)
当Activity的onCreate方法返回时调用
onDestoryView()
与onCreateView想相应,当该Fragment的视图被移除时调用
onDetach()
与onAttach相相应,当Fragment与Activity关联被取消时调用
注意:除了onCreateView,其它的全部方法假设你重写了。必须调用父类对于该方法的实现,
3、静态的使用Fragment嘿嘿。最终到使用的时刻了~~
这是使用Fragment最简单的一种方式。把Fragment当成普通的控件。直接写在Activity的布局文件里。
步骤:
1、继承Fragment,重写onCreateView决定Fragemnt的布局
2、在Activity中声明此Fragment。就当和普通的View一样
以下展示一个样例(我使用2个Fragment作为Activity的布局,一个Fragment用于标题布局,一个Fragment用于内容布局):
TitleFragment的布局文件:
[html] view plain copy
- < ?xml version="1.0" encoding="utf-8"?>
- < RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="match_parent"
- android:layout_height="45dp"
- android:background="@drawable/title_bar" >
- < ImageButton
- android:id="@+id/id_title_left_btn"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_centerVertical="true"
- android:layout_marginLeft="3dp"
- android:background="@drawable/showleft_selector" />
- < TextView
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- android:gravity="center"
- android:text="我不是微信"
- android:textColor="#fff"
- android:textSize="20sp"
- android:textStyle="bold" />
- < /RelativeLayout>
TitleFragment
[java] view plain copy
- package com.zhy.zhy_fragments;
- import android.app.Fragment;
- import android.os.Bundle;
- import android.view.LayoutInflater;
- import android.view.View;
- import android.view.View.OnClickListener;
- import android.view.ViewGroup;
- import android.widget.ImageButton;
- import android.widget.Toast;
- public class TitleFragment extends Fragment
- {
- private ImageButton mLeftMenu;
- @Override
- public View onCreateView(LayoutInflater inflater, ViewGroup container,
- Bundle savedInstanceState)
- {
- View view = inflater.inflate(R.layout.fragment_title, container, false);
- mLeftMenu = (ImageButton) view.findViewById(R.id.id_title_left_btn);
- mLeftMenu.setOnClickListener(new OnClickListener()
- {
- @Override
- public void onClick(View v)
- {
- Toast.makeText(getActivity(),
- "i am an ImageButton in TitleFragment ! ",
- Toast.LENGTH_SHORT).show();
- }
- });
- return view;
- }
- }
同理还有ContentFragment的其布局文件:
[html] view plain copy
-
<
?xml
version="1.0"
encoding="utf-8"?
【Android--Fragment基本介绍】>
- < LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="match_parent"
-
android:layout_height="match_parent"
<
推荐阅读
- 用XMPP实现完整Android聊天项目
- Android轻量级的开源缓存框架ASimpleCache
- androidadb 权限改动
- Android使用READ_CONTACTS读取手机联系人
- Android Retrofit+RxJava 优雅的处理服务器返回异常错误
- tomcat中的Manager App帐号password管理
- Linux Android 多点触摸协议 原文出自比特网,转载请保留原文链接(http://soft.chinabyte.com/os/71/12306571.shtml)
- 安卓工作室 日志设置
- create-react-app脚手架配置less