Fragment

本文介绍了Android中的Fragment概念,它是Activity界面的一部分,具有独立的布局和封装性。Fragment可以通过添加、移除、显示、隐藏和替换等方法进行管理。创建Fragment可静态或动态进行,其生命周期包括11个阶段,如onAttach、onCreate、onDestroy等。示例代码展示了如何在Activity中添加和切换Fragments。

Fragment作为Android最基本,最重要的基础概念之一,在开发中经常会和他大家到。Fragment可以理解成Activity中用户界面的一个行为后者一部分,它必须被嵌套Activity中。但是一个Fragment有它自己独立的xml布局文件,并且具有良好的封装性,因此特殊情况下Fragment可以容易用Activity来进行替换。

Fragment常用的方法有:

添加:add,移除:remove、显示:show、隐藏:hide、替换:replace。

创建方法有两种,一种为静态创建,一种是动态创建。

静态加载:创建Fragment布局,创建类继承自Fragment,重写类中必要方法,Activity页面布局中添加fragment标签并指定name。

动态创建方式思路:获得FragmentManager对象,开启事务,通过FragmentTransition调用add()、replace()方法管理fragment、提交transaction.commit();

Fragment生命周期共11个

onAttach():Fragment与Activity有联系

onCreate():创建Fragment

onCreateView():创建Fragment视图,尽量不要做耗时操作

onActivityCreated():当Activity中的onCreate方法执行完后调用。

onstart:启用

onResume():可见

onPause():不可见

onStop():停止

onDestroyView():销毁Fragment视图

onDestroy():销毁Fragment

onDetach():Fragment和Activity解除关联的时候调用

<FrameLayout
        android:id="@+id/fl"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_weight="1"></FrameLayout>
    <RadioGroup
        android:id="@+id/rg"
        android:orientation="horizontal"
        android:layout_width="match_parent"
        android:layout_height="45dp">
        <RadioButton
            android:id="@+id/rb1"
            android:button="@null"
            android:text="首页"
            android:textColor="@drawable/textcolor"
            android:checked="true"
            android:textAlignment="center"
            android:drawableTop="@drawable/home"
            android:layout_weight="1"
            android:layout_width="0dp"
            android:layout_height="match_parent"></RadioButton>
        <RadioButton
            android:id="@+id/rb2"
            android:button="@null"
            android:text="首页"
            android:textColor="@drawable/textcolor"
            android:textAlignment="center"
            android:drawableTop="@drawable/home"
            android:layout_weight="1"
            android:layout_width="0dp"
            android:layout_height="match_parent"></RadioButton>
        <RadioButton
            android:id="@+id/rb3"
            android:button="@null"
            android:text="首页"
            android:textColor="@drawable/textcolor"
            android:textAlignment="center"
            android:drawableTop="@drawable/home"
            android:layout_weight="1"
            android:layout_width="0dp"
            android:layout_height="match_parent"></RadioButton>
    </RadioGroup>
private FrameLayout fl;
    private RadioGroup rg;
    BlankFragment1 fragment1 = new BlankFragment1();
    BlankFragment2 fragment2 = new BlankFragment2();
    BlankFragment3 fragment3 = new BlankFragment3();
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        fl = findViewById(R.id.fl);
        rg = findViewById(R.id.rg);
        FragmentManager fragmentManager = getSupportFragmentManager();
        FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
        fragmentTransaction.add(R.id.fl,fragment1);//添加
        fragmentTransaction.add(R.id.fl,fragment2);
        fragmentTransaction.add(R.id.fl,fragment3);
        fragmentTransaction.hide(fragment1);//隐藏
        fragmentTransaction.hide(fragment2);
        fragmentTransaction.hide(fragment3);
        fragmentTransaction.show(fragment1);//展示
        fragmentTransaction.commit();//提交
        rg.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(RadioGroup radioGroup, int i) {
                switch (i)
                {
                    case R.id.rb1:
                        changedFragment(fragment1);
                        break;
                    case R.id.rb2:
                        changedFragment(fragment2);
                        break;
                    case R.id.rb3:
                        changedFragment(fragment3);
                        break;
                }
            }

            private void changedFragment(Fragment fragment) {
                FragmentManager fragmentManager1 = getSupportFragmentManager();
                FragmentTransaction fragmentTransaction1 = fragmentManager1.beginTransaction();
                fragmentTransaction1.hide(fragment1);
                fragmentTransaction1.hide(fragment2);
                fragmentTransaction1.hide(fragment3);
                fragmentTransaction1.show(fragment);
                fragmentTransaction1.commit();
            }
        });
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值