Android开发Fragment创建(一)

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)不可用。
发布了50 篇原创文章 · 获赞 33 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_25884515/article/details/96486742