Android开发Fragment创建(一)

本文详细介绍了Android中Fragment的创建过程,包括定义Fragment类、在XML中直接引入和通过Java代码添加。同时,讨论了Fragment的效果及生命周期,涵盖了onCreateView方法、FragmentTransaction的使用和Fragment的生命周期方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Fragment创建

  • 为fragment创建一个布局
  • 定义一个类继承fragment
  • 重写oncreatView方法
定义Fragment类

Frament.java

public class MyFragment extends Fragment {    
    @Nullable    
    @Override    
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {       
        View view = View.inflate(getContext(), R.layout.fragment_layout, null);       
        return view;   
    }
}

fragment_layout.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"   
    android:layout_width="match_parent"    
    android:layout_height="match_parent">    
    <TextView        
        android:layout_width="wrap_content"          
        android:layout_height="wrap_content"       
        android:text="This is a Fragment"/>
</LinearLayout>
直接XML中引入
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    
    android:layout_width="match_parent"    
    android:layout_height="match_parent"    
    android:orientation="vertical">    
    <fragment        
        android:id="@+id/one_frament_one"        
        android:layout_width="match_parent"        
        android:layout_height="match_parent"        
        android:name="com.godc.fragmenttest.MyFragment"/>
</LinearLayout>
在Java代码中引进
    FragmentManager fragmentManager = getSupportFragmentManager();
    FragmentTransaction transaction = fragmentManager.beginTransaction();
    MyFragment myFragment = new MyFragment();
    /* * 
    *参数1:Fragment容器id 
    * 参数2:Fragment 
    * 参数3:给添加的Fragment设置标签名 
    */
    transaction.add(R.id.one_frament_one, myFragment, "FragmentB");
    transaction.commit();
效果
总结

Fragment生命周期

onAttach
onCreate
onCreateView
onActivityCreated
onStart
onResume
onPause
onStop
onDestroyView
onDestroy
onDetach

生命周期方法介绍

方法含义
onAttach()当Fragment和活动建立关联的时候调用
onCreate()当Fragment被建立的时候调用
onCreateView()为Fragment创建视图时调用
onActivityCreated()与Fragment相关联的活动已经创建完毕时调用
onDestroyView()当Fragment管理的视图被移除的时候调用
onDetach()当Fragment和活动解除关联的时候调用

FragmentTransaction方法汇总

方法含义生命周期调用
add(id, fragment)添加一个fragment到队列一个fragment不可添加两次
show(fragment)添加一个fragment队列中不存在该fragment时,回调onAttach()、onCreate()。当队列中存在该fragment时并被调用过hide(fragment)时,回调onHiddenChange(boolean)。其他情况没有回调函数。
replace(id,fragment)队列中已经存在会崩溃,不存在会进入队列并把其他fragment清出队列,最后显示该fragment到指定布局中。同add(id, fragment)
remove(fragment)销毁队列中指定的fragment当队列中不存在该fragment时,不会有任何反应。当队列中存在该fragment时,fragment的生命周期执行情况主要依赖是否当前fragment进入到返回栈。
hide(fragment)隐藏队列中指定的fragment,相当于调用视图的.setVisibility(View.GONE)当队列中存在该fragment时,回调onHiddenChange(boolen)当队列中不存在该fragment时,回调onAttach()、onCreate()、onHiddenChange(boolen)。
detach(fragment)销毁指定frament的视图,并且该fragment的onCreateVieew(……)不能再被调用(除非调用attach(fragment)重新连接)当队列中存在该fragment时,回调onDestroyView()当队列中不存在该fragment时,回调onAttach()、onCreate()。
attach(fragment)创建指定fragment的视图。标识该fragment的onCreateView(……)能被调用。当队列中存在该fragment时且被调用detach(fragment)时,回调createView()、onActivityCreated()、onResume()。当队列中不存在该fragment时,回调onAttach()、onCreate()。
addToBackStack(string)使本次事务增加的fragment进入当前activity的返回栈中。当前参数是对返回栈的描述,没什么实际用途。传入null即可。
commit()提交本次事务,可在非主线程中被调用。主要用于多线程处理情况。
commitNow()提交本次事务,只在主线程中被调用。 这时候addToBackStack(string)不可用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陌尘吖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值