封装代码和UI利器—Fragment(二)

来源:互联网 发布:js true false 编辑:程序博客网 时间:2024/06/05 19:19

       上期回顾了Fragment技术的来龙去脉,今天我主要是复习学习Fragment的生命周期,学习Fragment 的生命周期应该与Activity的生命周期同时复习,顺便做个比较。

Activity的生命周期方法有7个,而Fragment的生命周期方法多达11个。



上面我画了一张图,直角矩形代表的是Fragment的生命周期的过程,圆角矩形飙到的是Activity的生命周期。

下面给出一个实例


package com.fragmentCyle;import android.app.Activity;import android.os.Bundle;import android.support.v4.app.Fragment;import android.util.AttributeSet;import android.util.Log;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;public class MyFragment1 extends Fragment{@Overridepublic void onInflate(Activity activity, AttributeSet attrs,Bundle savedInstanceState) {// TODO Auto-generated method stubLog.d("Fragment1", "onInflate");Log.d("Fragment1_onInflate_activity_stringResource", activity.getResources().getString(R.id.action_settings));Log.d("fragment1_onInflate_class", attrs.getAttributeValue(null,"class"));//无法获得Log.d("Fragment1_onInflate_getActivity", String.valueOf(getActivity()));Log.d("Fragment1_onInflate_saveInstancesteate", String.valueOf(savedInstanceState));super.onInflate(activity, attrs, savedInstanceState);}@Overridepublic void onAttach(Activity activity) {// TODO Auto-generated method stub//无法获得EditTextLog.d("Fragment_onAttach_activity_Editext", String.valueOf(activity.findViewById(R.id.myEditText)));Log.d("Fragment_onAttach_activity_Editext", String.valueOf(getActivity().findViewById(R.id.myEditText)));super.onAttach(activity);}@Overridepublic void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);}@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {// TODO Auto-generated method stubView view = inflater.inflate(R.layout.first_fragment, null);Log.d("Fragment_onCreateView_activity_Editext", String.valueOf(getActivity().findViewById(R.id.myEditText)));Log.d("Fragment1_onCreateView_EditText", String.valueOf(view.findViewById(R.id.myEditText)));return view;}@Overridepublic void onViewCreated(View view, Bundle savedInstanceState) {// TODO Auto-generated method stubLog.d("Fragment_onViewCreated_activity_Editext", String.valueOf(getActivity().findViewById(R.id.myEditText)));Log.d("Fragment1_onViewCrated_EditText", String.valueOf(view.findViewById(R.id.myEditText)));super.onViewCreated(view, savedInstanceState);}@Overridepublic void onActivityCreated(Bundle savedInstanceState) {// TODO Auto-generated method stubLog.d("Fragment_onActivityCreated_activity_Editext", String.valueOf(getActivity().findViewById(R.id.myEditText)));super.onActivityCreated(savedInstanceState);}@Overridepublic void onStart() {// TODO Auto-generated method stubsuper.onStart();}@Overridepublic void onResume() {// TODO Auto-generated method stubsuper.onResume();}@Overridepublic void onPause() {// TODO Auto-generated method stubsuper.onPause();}@Overridepublic void onStop() {// TODO Auto-generated method stubsuper.onStop();}@Overridepublic void onDestroyView() {// TODO Auto-generated method stubsuper.onDestroyView();}@Overridepublic void onDestroy() {// TODO Auto-generated method stubsuper.onDestroy();}@Overridepublic void onDetach() {// TODO Auto-generated method stubsuper.onDetach();}}


package com.fragmentCyle;import android.app.Activity;import android.os.Bundle;import android.support.v4.app.Fragment;import android.util.AttributeSet;import android.util.Log;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;public class MyFragment2 extends Fragment{@Overridepublic void onActivityCreated(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onActivityCreated(savedInstanceState);Log.d("onActivityCreated", "onActivityCreated");}@Overridepublic void onAttach(Activity activity) {// TODO Auto-generated method stubsuper.onAttach(activity);}@Overridepublic void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);}@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {// TODO Auto-generated method stubView view = inflater.inflate(R.layout.second_fragment, null);return view;}@Overridepublic void onDestroy() {// TODO Auto-generated method stubsuper.onDestroy();}@Overridepublic void onDestroyView() {// TODO Auto-generated method stubsuper.onDestroyView();}@Overridepublic void onDetach() {// TODO Auto-generated method stubsuper.onDetach();}@Overridepublic void onInflate(Activity activity, AttributeSet attrs,Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onInflate(activity, attrs, savedInstanceState);}@Overridepublic void onPause() {// TODO Auto-generated method stubsuper.onPause();}@Overridepublic void onResume() {// TODO Auto-generated method stubsuper.onResume();}@Overridepublic void onStart() {// TODO Auto-generated method stubsuper.onStart();}@Overridepublic void onStop() {// TODO Auto-generated method stubsuper.onStop();}@Overridepublic void onViewCreated(View view, Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onViewCreated(view, savedInstanceState);}}

package com.fragmentCyle;import android.app.Activity;import android.os.Bundle;import android.support.v4.app.FragmentActivity;import android.view.Menu;public class FragmentCycleActivity extends FragmentActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.main, menu);return true;}}




错误分析:



引起这个错误的原因在导入了import android.support.v4.app.Fragment;   导入这个包必须继承FragmentActivity .


0 0
原创粉丝点击