标签:android des style http 使用 os
Android在3.0中引入了fragments的概念,主要目的是用在大屏幕设备上--例如平板电脑上,支持更加动态和灵活的UI设计.平板电脑的屏幕要比手机的大得多,有更多的空间来放更多的UI组件,并且这些组件之间会产生更多的交互.Fragment允许这样的一种设计,而不需要你亲自来管理viewhierarchy的复杂变化. 通过将activity的布局分散到fragment中, 你可以在运行时修改activity的外观,并在由activity管理的back stack中保存那些变化。
例如, 一个新闻应用可以在屏幕左侧使用一个fragment来展示一个文章的列表,然后在屏幕右侧使用另一个fragment来展示一篇文章 – 2个fragment并排显示在相同的一个activity中,并且每一个fragment拥有它自己的一套生命周期回调方法,并且处理它们自己的用户输入事件. 因此, 取代使用一个activity来选择一篇文章,而另一个activity来阅读文章 的方式,用户可以在相同的activity中选择一篇文章并且阅读, 如图所示:
1 |
和Activity一样,Fragment也有自己的生命周期。 一个Fragment必须总是嵌入在一个Activity中,同时Fragment的生命周期受Activity而影响。
|
Activity的生命周期影响Fragment的生命周期
下面通过程序来观察Fragment的生命周期
第一步:新建一个Android工程命名为FragmentLifecycle目录结构如下图:
第二步:修改activity_main.xml布局文件代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<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"
tools:context=".MainActivity" >
<fragment
android:id="@+id/fragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
class="cn.eoe.leigo.lifecycle.MyFragment" />
</RelativeLayout>
|
第三步:编写MainActivity类:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
package cn.eoe.leigo.lifecycle;
import cn.eoe.leigo.fragment.R;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
public class MainActivity extends Activity {
private static final String TAG = "MainActivity";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.d(TAG, "-----Activity onCreate-----");
}
@Override
protected void onStart() {
super.onStart();
Log.d(TAG, "-----Activity onStart-----");
}
@Override
protected void onRestart() {
super.onRestart();
Log.d(TAG, "-----Activity onRestart-----");
}
@Override
protected void onResume() {
super.onResume();
Log.d(TAG, "-----Activity onResume-----");
}
@Override
protected void onPause() {
super.onPause();
Log.d(TAG, "-----Activity onPause-----");
}
@Override
protected void onStop() {
super.onStop();
Log.d(TAG, "-----Activity onStop-----");
}
@Override
protected void onDestroy() {
super.onDestroy();
Log.d(TAG, "-----Activity onDestroy-----");
}
}
|
第四步:编写MyFragment类:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 |
package cn.eoe.leigo.lifecycle;
import android.app.Activity;
import android.app.Fragment;
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 MyFragment extends Fragment {
private static final String TAG = "MyFragment";
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
Log.d(TAG, "----------Fragment onAttach----------");
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.d(TAG, "----------Fragment onCreate----------");
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
Log.d(TAG, "----------Fragment onCreateView----------");
TextView textView = new TextView(getActivity());
textView.setText("欢迎来到石头的博客");
return textView;
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
Log.d(TAG, "----------Fragment onActivityCreated----------");
}
@Override
public void onStart() {
super.onStart();
Log.d(TAG, "----------Fragment onStart----------");
}
@Override
public void onResume() {
super.onResume();
Log.d(TAG, "----------Fragment onResume----------");
}
@Override
public void onPause() {
super.onPause();
Log.d(TAG, "----------Fragment onPause----------");
}
@Override
public void onStop() {
super.onStop();
Log.d(TAG, "----------Fragment onStop----------");
}
@Override
public void onDestroyView() {
super.onDestroyView();
Log.d(TAG, "----------Fragment onDestroyView----------");
}
@Override
public void onDestroy() {
super.onDestroy();
Log.d(TAG, "----------Fragment onDestroy----------");
}
@Override
public void onDetach() {
super.onDetach();
Log.d(TAG, "----------Fragment onDetach----------");
}
}
|
通过查看Log可以看到
显示到前台时:
MyFragment onAttach() fragment关联到activity上
MyFragment onCreate()
fragment创建
MyFragment onCreateView() fragment创建自己的视图
MainActivity onCreate()
MyFragment onActivityCreated()
可以处理fragment数据的初始化
MainActivity onStart()
MyFragment onStart()
MainActivity onResume()
MyFragment onResume()
按后退键时:
MyFragment onPause()
MainActivity onPause()
MyFragment onStop()
MainActivity onStop()
MyFragment onDestoryView() 销毁掉自己的视图
MyFragment onDestory()
MyFragment onDetach() 解除和activity的关联
MainActivity onDetory()
声明:eoe文章著作权属于作者,受法律保护,转载时请务必以超链接形式附带如下信息
原文作者: gaolei_xj
Fragment生命周期(转),码迷,mamicode.com
标签:android des style http 使用 os
原文地址:http://www.cnblogs.com/SharkBin/p/3699866.html