Fragment生命周期
2015-10-16 09:41
162 查看
从布局文件加载示例
activitypackage com.example.fragmentdemo; import com.example.androiddemo.R; import android.app.Activity; import android.os.Bundle; import android.os.Handler; import android.util.Log; public class MainActivity extends Activity { private static final String TAG = "MainActivity"; @Override protected void onCreate(Bundle savedInstanceState) { Log.d(TAG, "onCreate"); super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } @Override public void onResume() { super.onResume(); Log.d(TAG, "onResume"); } @Override public void onPause() { super.onPause(); Log.d(TAG, "onPause"); } @Override public void onDestroy() { super.onDestroy(); Log.d(TAG, "onDestroy"); } }
layout activity_main.xml
<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" > <fragment android:id="@+id/fragment" android:layout_width="match_parent" android:layout_height="match_parent" class="com.example.fragmentdemo.Fragment1" /> </RelativeLayout>
fragment
package com.example.fragmentdemo;
import android.app.Fragment;
import android.content.Context;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
public class Fragment1 extends Fragment {
private static final String TAG = "Fragment1";
@Override
public void onAttach(Context context) {
Log.d(TAG, "onAttach");
super.onAttach(context);
}
@Override
public void onCreate(Bundle savedInstanceState) {
Log.d(TAG, "onCreate");
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
Log.d(TAG, "onCreateView");
TextView text = new TextView(getActivity());
text.setText("hello world");
return text;
}
@Override
public void onResume() {
Log.d(TAG, "onResume");
super.onResume();
}
@Override
public void onPause() {
Log.d(TAG, "onPause");
super.onPause();
}
@Override
public void onDestroy() {
Log.d(TAG, "onDestroy");
super.onDestroy();
}
}
logcat
创建
10-16 09:34:47.520: D/MainActivity(24075): onCreate
10-16 09:34:47.610: D/Fragment1(24075): onCreate
10-16 09:34:47.610: D/Fragment1(24075): onCreateView
10-16 09:34:47.660: D/MainActivity(24075): onResume
10-16 09:34:47.660: D/Fragment1(24075): onResume
退出
10-16 09:36:07.620: D/Fragment1(24075): onPause
10-16 09:36:07.620: D/MainActivity(24075): onPause
10-16 09:36:08.140: D/Fragment1(24075): onDestroy
10-16 09:36:08.140: D/MainActivity(24075): onDestroy
代码中动态加载示例
Activity 代码package com.example.fragmentdemo; import com.example.androiddemo.R; import android.app.Activity; import android.app.FragmentManager; import android.app.FragmentTransaction; import android.os.Bundle; import android.os.Handler; import android.util.Log; public class MainActivity2 extends Activity { private static final String TAG = "MainActivity"; Fragment2 mFragment2; @Override protected void onCreate(Bundle savedInstanceState) { Log.d(TAG, "onCreate"); super.onCreate(savedInstanceState); setContentView(R.layout.activity_main2); Handler handler = new Handler(); handler.postDelayed(new Runnable() { public void run() { mFragment2 = new Fragment2(); } }, 3000); handler.postDelayed(new Runnable() { public void run() { FragmentManager fragmentManager = getFragmentManager(); FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); fragmentTransaction.replace(R.id.fragment_container, mFragment2); fragmentTransaction.commit(); } }, 6000); } @Override public void onResume() { super.onResume(); Log.d(TAG, "onResume"); } @Override public void onPause() { super.onPause(); Log.d(TAG, "onPause"); } @Override public void onDestroy() { super.onDestroy(); Log.d(TAG, "onDestroy"); } }
layout activity_main2.xml
<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/fragment_container" android:layout_width="match_parent" android:layout_height="match_parent" /> </RelativeLayout>
Fragment
package com.example.fragmentdemo; import android.app.Activity; import android.app.Fragment; import android.content.Context; import android.os.Bundle; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ScrollView; import android.widget.TextView; public class Fragment2 extends Fragment { private static final String TAG = "Fragment2"; @Override public void onAttach(Context context) { Log.d(TAG, "onAttach context"); super.onAttach(context); } @Override public void onAttach(Activity activity) { Log.d(TAG, "onAttach activity"); super.onAttach(activity); } @Override public void onCreate(Bundle savedInstanceState) { Log.d(TAG, "onCreate"); super.onCreate(savedInstanceState); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { Log.d(TAG, "onCreateView"); TextView text = new TextView(getActivity()); text.setText("2222222"); return text; } @Override public void onPause() { Log.d(TAG, "onPause"); super.onPause(); } @Override public void onDestroy() { Log.d(TAG, "onDestroy"); super.onDestroy(); } }
Logcat
启动
10-16 10:16:43.710: D/MainActivity(26928): onCreate
10-16 10:16:43.750: D/MainActivity(26928): onResume
10-16 10:16:49.750: D/Fragment2(26928): onAttach activity
10-16 10:16:49.750: D/Fragment2(26928): onCreate
10-16 10:16:49.750: D/Fragment2(26928): onCreateView
退出
10-16 10:16:52.440: D/Fragment2(26928): onPause
10-16 10:16:52.440: D/MainActivity(26928): onPause
10-16 10:16:52.870: D/Fragment2(26928): onDestroy
10-16 10:16:52.870: D/MainActivity(26928): onDestroy
从日志中可以看到onCreate 3秒后, Fragment 实例化(new)的时候,并没有执行该Fragment的 onCreate()。
而是在6秒后,FragmentTransition commit()方法执行时,onAttach onCreate onCreateView 依次被执行。
此外,这个示例中,前6秒界面都是空白的,直至6秒后,才有字符串“222222”的显示。也就是说onCreateView执行后,界面上立即显示了。
相关文章推荐
- Maven搭建hadoop环境报Missing artifact jdk.tools:jdk.tools:jar:1.7
- Maven搭建hadoop环境报Missing artifact jdk.tools:jdk.tools:jar:1.7
- IOS开发之保存图片到Documents目录及PNG,JPEG格式相互转换
- 由Synchronized的内存可见性说起
- 性能优化之布局优化
- “采用VS2010至MFC4.2发育”最后溶液
- apache配置多域名多站点记录
- Carlson.Survey.Embedded.2016 1CD
- ubuntu里设置从串口登录
- 关于指针的引用
- Zabbix 监控 Nginx 状态
- 第八周 项目2 建立链串
- 学习日志---linux打卡11
- string.format() 的使用
- 飞机大战的山寨版游戏源码
- 使用JAMA包求伪逆
- CopyUtil
- 性能优化之数据库优化
- Swift2.1 语法指南——协议
- pb中创建连接webservice对象实例方法