接續上一次有點提過的內容Fragment,經過一年,我認為這還可以再講的詳細些,這也是很多初學者一直都不太清楚的部分,所以我決定來講一下,希望能幫助到受Fragmet所可的同學。
onAttach -> onCreate -> onCreateView -> onViewCreated -> onStart -> onResume -> onPause -> onStop -> onDestoryView -> onDestory -> onDetach
粗體為未銷毀時的起點和離開點
//new 實例時傳入(setArguments)
public static CFragment newInstance(String param1, String param2) {
CFragment fragment = new CFragment();
Bundle args = new Bundle();
args.putString(ARG_PARAM1, param1);
args.putString(ARG_PARAM2, param2);
fragment.setArguments(args);
return fragment;
}
//onCreate時拿取(getArguments)
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (getArguments() != null) {
mParam1 = getArguments().getString(ARG_PARAM1);
mParam2 = getArguments().getString(ARG_PARAM2);
}
}
Intent intent = new Intent(getActivity(),FragmentTwoActivity.class);
startActivity(intent);
每次切換都要開新的Traction,不然不會有反應。
//如果堆疊裡只有一個則會自動show
getSupportFragmentManager().beginTransaction().replace(R.id.fl_container,aFragment).commit();
//如果堆疊不只有一個則需加上show,replace會銷毀Fragment,生命週期會重跑
getSupportFragmentManager().beginTransaction().replace(R.id.fl_container,aFragment).show(aFragment).commit();
//如果都在堆疊裡,可透過hide、show控制,生命週期不會重跑。
getSupportFragmentManager().beginTransaction().hide(aFragment).show(bFragment).commit();
以上為Fragment大致的功能,這是我目前遇到過的情況,希望對需要Fragmet的同學來說算充實。