介绍下碎片的生命周期:
onAttach(Activity):当碎片和活动关联的时候调用。.
onCreate(Bundle) :初始化碎片时调用。
onCreateView(LayoutInflater, ViewGroup, Bundle) :创建并返回跟碎片关联的视图层。
onActivityCreated(Bundle) :告诉碎片它关联的活动已经完成了创建。
onViewStateRestored(Bundle) :告诉碎片它的所有视图层保存的状态已经恢复。
onStart() :使得碎片对用户可见。
onResume() :使得碎片与用户可交互。
onPause() :碎片不再与用户交互因为与其关联的活动暂停或碎片的操作改变了活动。
onStop() :.碎片不再对用户可见因为与其关联的活动停止或碎片的操作改变了活动
onDestroyView() :允许碎片清理与视图相关的资源。
onDestroy():清理碎片的状态。
onDetach() :在碎片不再关联活动之前调用。
自定义Fragment:
public class TestFrag1 extends Fragment { private String Tag = "TestFrag1"; @Override public void onAttach(Activity activity) { // TODO Auto-generated method stub super.onAttach(activity); Log.d(Tag, "onAttach"); } @Override public void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); Log.d(Tag, "onCreate"); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // TODO Auto-generated method stub Log.d(Tag, "onCreateView"); return inflater.inflate(R.layout.frag_test, container, false); } @Override public void onActivityCreated(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onActivityCreated(savedInstanceState); Log.d(Tag, "onActivityCreated"); } @Override public void onStart() { // TODO Auto-generated method stub super.onStart(); Log.d(Tag, "onStart"); } @Override public void onResume() { // TODO Auto-generated method stub super.onResume(); Log.d(Tag, "onResume"); } @Override public void onPause() { // TODO Auto-generated method stub super.onPause(); Log.d(Tag, "onPause"); } @Override public void onStop() { // TODO Auto-generated method stub super.onStop(); Log.d(Tag, "onStop"); } @Override public void onDestroyView() { // TODO Auto-generated method stub super.onDestroyView(); Log.d(Tag, "onDestroyView"); } @Override public void onDestroy() { // TODO Auto-generated method stub super.onDestroy(); Log.d(Tag, "onDestroy"); } @Override public void onDetach() { // TODO Auto-generated method stub super.onDetach(); Log.d(Tag, "onDetach"); } }
在布局中引用:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" > <FrameLayout android:id="@+id/layout_frame" android:layout_width="match_parent" android:layout_height="match_parent" > <fragment android:name="com.andemo.TestFrag1" android:layout_width="match_parent" android:layout_height="match_parent" /> </FrameLayout> </RelativeLayout>
public class MainActivity extends FragmentActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } }
跟活动的周期很相似,这里就不多说了,注意下其中的创建的视图要返回给关联的活动需调用onCreateView(),而不是onCreate()。