Fragment生命周期 Fragment比Activity多的生命周期 Fragment引入佈局 重寫onCreateView方法引入佈局 Fragment事務 1.基本方法 使用事務之前,需要先獲取FragmentManager Fragment的回退棧 通過Activity維護一個回退棧來保存 ...
Fragment生命周期
Fragment比Activity多的生命周期
onAttach() //Fragment和Activity建立關聯的時候調用,被附加到Activity中去 onCreate() //系統會在創建Fragment時調用此方法,可以初始化資源文件等 onCreateView() //系統會在Fragment首次繪製其用戶界面時調用此方法。該方法中返回的 View 必須是Fragment佈局的根視圖,也可以返回 null。 onViewCreated() //在Fragment被繪製後,調用此方法,可以初始化控制項資源 onActivityCreated() //Activity被渲染繪製出來後 onDestroyView() //佈局被移除時調用 onDetach() //Fragment和Activity解除關聯的時候調用
Fragment引入佈局
重寫onCreateView方法引入佈局
public class Fragment extends Fragment { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return inflater.inflate(R.layout.fragment, container, false); } }
Fragment事務
1.基本方法
使用事務之前,需要先獲取FragmentManager
//事務開啟 FragmentTransaction transaction = fm.benginTransatcion(); //添加一個Fragment transaction.add() //清除一個Fragment,如果沒有添加進回退棧實例會被銷毀 transaction.remove() //移除一個Fragment transaction.detach() //替換一個Fragment transaction.replace() //隱藏一個Fragment transaction.hide() //顯示一個Fragment transaction.show() //添加事務動畫 transaction.setTransition() //添加進回退棧 transaction.addToBackStack(String) //提交事務 transatcion.commit()
Fragment的回退棧
通過Activity維護一個回退棧來保存每次Fragment事務發生的變化
如果將Fragment任務添加到回退棧,當用戶點擊後退按鈕時將看到上一次的保存的Fragment
如果使用replace()方法,Fragment沒有添加到回退棧,Fragment將會被銷毀
如果使用remove()方法,Fragment的視圖將會銷毀
如果使用hide()方法隱藏Fragment,然後添加到回退棧,再次back,View視圖將會保存
添加回退棧addOnBackStackChangedListener()監聽器
Fragment與Activity之間的交互
//獲取Fragment管理器 getFragmentManager() //獲取Fragment的實例 findFragmentById()或者findFragmentByTag() //獲取綁定的Activity的實例 getActivity() //避免重覆創建實例 @Override protected void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); if(savedInstanceState == null){ //在創建Fragment時調用onCreate方法判斷savedInstanceState 非空 } } //旋轉屏幕,不重新載入activity,保存Fragment android:configChanges="orientation|screenSize“