安卓ActivityAndroid知识Android开发

Android四大组件之Activity(五)

2017-03-15  本文已影响34人  程序员丶星霖

Android四大组件之Activity(五)

Activity的相关知识也快介绍的差不多了,来认识一下Fragment(官方称之为“片段”)吧。

Fragment简介

关于Fragment,可以归纳一下几个特征:

Fragment的设计初衷

Android3.0引入Fragment的初衷是为了适应大屏幕的平板电脑,由于平板电脑的屏幕比手机屏幕更大,因此可以容纳更多的UI组件,且这些UI组件之间存在交互关系。利用Fragment实现此类设计时,我们无需管理对视图层次结构的复杂更改。
Fragment简化了大屏幕UI的设计,它不需要开发者管理组件包含关系的复杂变化,开发者使用Fragment对UI组件进行分组、模块化管理,就可以更方便地在运行过程中动态更新Activity的用户界面。

如下图所示:
31501.png

如何创建一个Fragment?

与创建Activity类似,在创建Fragment时必须继承Fragment的基类。
通常来说,创建一个Fragment需要实现以下三个方法:

public class NoneLeftMenuFragment extends Fragment {

    private View inflate;

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        inflate = inflater.inflate(R.layout.fragment_none_leftmenu, container, false);
        return inflate;
    }
}

inflate()方法有三个参数:

Fragment与Activity通信

为了在Activity中显示Fragment,还必须将Fragment添加到Activity中。将Fragment添加到Activity中有下面两种方法:

  1. 在Activity的布局文件内声明Fragment;
    在布局文件中使用<fragment.../>元素添加Fragment,<fragment.../>元素的android:name属性指定Fragment的实现类。
<fragment
    android:id="@+id/none_fragment"
    android:name="com.tengxin.chelingwang.ui.fragment.NoneLeftMenuFragment"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
</fragment>
  1. 通过编程方式将片段添加到某个现有ViewGroup
    在Java代码中通过FragmentTrasaction对象的add()方法来添加Fragment。
    在布局文件中使用<FrameLayout.../>添加布局,用于之后的内容替换;
    Activity的getFragmentManager()方法可返回FragmentManager,FragmentManager对象的beginTransaction()方法即可开启并返回FragmentTransaction对象。
<FrameLayout
    android:id="@+id/fl_container"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
</FrameLayout>
private void initView() {
    noneLeftMenuFragment = new NoneLeftMenuFragment();
    fragmentManager = getSupportFragmentManager();
    transaction = fragmentManager.beginTransaction();
    replace = transaction.replace(R.id.fl_container, noneLeftMenuFragment);
    replace.commit();
}

将Fragment添加到Activity之后,Fragment必须与Activity交互信息,这就需要Fragment能够获取它所在的Activity,Activity也能获取它所包含的任意的Fragment。可以按照下面的方法获取:

Fragment与Activity相互传递数据可按下面的方式进行:

Fragment管理与Fragment事物

Activity管理Fragment主要依靠FragmentManager,FragmentManager可以完成如下几方面的功能:

在Activity中使用Fragment可以根据用户行为通过它们执行添加、移除、替换以及其他操作。我们提交给Activity的魅族更改都被称之为事务,可以使用FragmentTransaction中的API来执行一项事务。
向FragmentTransaction添加更改的顺序无关紧要,不过:

Fragment的生命周期

与Activity类似,Fragment也存在如下状态:

31502.png
在Fragment的生命周期中,下面的方法会被系统所回调:
好的,今天就到这吧。只是简单的介绍一下Fragment,欢迎大家关注我的微信公众号!
qrcode_for_gh_ca0387b084e8_344.jpg
上一篇 下一篇

猜你喜欢

热点阅读