Fragment学习之回退栈的管理
来源:互联网 发布:南北方饮食差异 知乎 编辑:程序博客网 时间:2024/06/05 03:15
类似于Activity,当用户在点击后退键时,系统会将Activity保存起来,Fragment也有这种功能,不过我们要显示的调用addToBackStack()方法进行保存。
MainActivity.java代码如下:
public class MainActivity extends FragmentActivity implements OnClickListener {private FragmentManager manager;private FragmentTransaction transaction;private Button button1, button2, button3, button4;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);/*获取manager*/manager = this.getSupportFragmentManager();/** * 获取对应的控件,以及设置对应的监听事件 */button1 = (Button) this.findViewById(R.id.button1);button1.setOnClickListener(this);button2 = (Button) this.findViewById(R.id.button2);button2.setOnClickListener(this);button3 = (Button) this.findViewById(R.id.button3);button3.setOnClickListener(this);button4 = (Button) this.findViewById(R.id.button4);button4.setOnClickListener(this);}@Overridepublic void onClick(View v) {/*获取事物*/transaction = manager.beginTransaction();switch (v.getId()) {case R.id.button1:Fragment1 fragment1 = new Fragment1();/*替换对应的容器id*/transaction.replace(R.id.center, fragment1, "fragment1");/*把fragment1添加到回退栈中*/transaction.addToBackStack("fragment1");break;case R.id.button2:Fragment2 fragment2 = new Fragment2();/*替换*/transaction.replace(R.id.center, fragment2, "fragment2");/*把fragment2添加到回退栈*/transaction.addToBackStack("fragment2");break;case R.id.button3:Fragment3 fragment3 = new Fragment3();/*替换*/transaction.replace(R.id.center, fragment3, "fragment3");/*把fragment3添加到回退栈*/transaction.addToBackStack("fragment3");break;case R.id.button4:Fragment4 fragment4 = new Fragment4();/*替换*/transaction.replace(R.id.center, fragment4, "fragment4");/*把fragment4添加到回退栈*/transaction.addToBackStack("fragment4");break;}/*提交事物*/transaction.commit();}}
Fragment1.java代码:
public class Fragment1 extends Fragment {public Fragment1() {// TODO Auto-generated constructor stub}private final String TAG = "Fragment1";@Overridepublic void onAttach(Activity activity) {// TODO Auto-generated method stubsuper.onAttach(activity);Log.i(TAG, "-----Fragment1->>onAttach");}@Overridepublic void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);Log.i(TAG, "-----Fragment1->>onCreate");}@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {// TODO Auto-generated method stubLog.i(TAG, "-----Fragment1->>onCreateView");View view = inflater.inflate(R.layout.f1, null);return view;}@Overridepublic void onActivityCreated(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onActivityCreated(savedInstanceState);Log.i(TAG, "-----Fragment1->>onActivityCreated");}@Overridepublic void onStart() {// TODO Auto-generated method stubsuper.onStart();Log.i(TAG, "-----Fragment1->>onStart");}@Overridepublic void onResume() {// TODO Auto-generated method stubsuper.onResume();Log.i(TAG, "-----Fragment1->>onResume");}@Overridepublic void onPause() {// TODO Auto-generated method stubLog.i(TAG, "-----Fragment1->>onPause");super.onPause();}@Overridepublic void onStop() {// TODO Auto-generated method stubsuper.onStop();Log.i(TAG, "-----Fragment1->>onStop");}@Overridepublic void onDestroyView() {// TODO Auto-generated method stubsuper.onDestroyView();Log.i(TAG, "-----Fragment1->>onDestroyView");}@Overridepublic void onDestroy() {// TODO Auto-generated method stubsuper.onDestroy();Log.i(TAG, "-----Fragment1->>onDestroy");}@Overridepublic void onDetach() {// TODO Auto-generated method stubsuper.onDetach();Log.i(TAG, "-----Fragment1->>onDetach");}}
Fragment2.java代码
public class Fragment2 extends Fragment {public Fragment2() {// TODO Auto-generated constructor stub}private final String TAG = "Fragment2";@Overridepublic void onAttach(Activity activity) {// TODO Auto-generated method stubsuper.onAttach(activity);Log.i(TAG, "-----Fragment2->>onAttach");}@Overridepublic void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);Log.i(TAG, "-----Fragment2->>onCreate");}@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {// TODO Auto-generated method stubLog.i(TAG, "-----Fragment2->>onCreateView");View view = inflater.inflate(R.layout.f2, null);return view;}@Overridepublic void onActivityCreated(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onActivityCreated(savedInstanceState);Log.i(TAG, "-----Fragment2->>onActivityCreated");}@Overridepublic void onStart() {// TODO Auto-generated method stubsuper.onStart();Log.i(TAG, "-----Fragment2->>onStart");}@Overridepublic void onResume() {// TODO Auto-generated method stubsuper.onResume();Log.i(TAG, "-----Fragment2->>onResume");}@Overridepublic void onPause() {// TODO Auto-generated method stubLog.i(TAG, "-----Fragment2->>onPause");super.onPause();}@Overridepublic void onStop() {// TODO Auto-generated method stubsuper.onStop();Log.i(TAG, "-----Fragment2->>onStop");}@Overridepublic void onDestroyView() {// TODO Auto-generated method stubsuper.onDestroyView();Log.i(TAG, "-----Fragment2->>onDestroyView");}@Overridepublic void onDestroy() {// TODO Auto-generated method stubsuper.onDestroy();Log.i(TAG, "-----Fragment2->>onDestroy");}@Overridepublic void onDetach() {// TODO Auto-generated method stubsuper.onDetach();Log.i(TAG, "-----Fragment2->>onDetach");}}
Fragment3.java
public class Fragment3 extends Fragment {public Fragment3() {// TODO Auto-generated constructor stub}@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.f3, null);return view;}@Overridepublic void onPause() {// TODO Auto-generated method stubsuper.onPause();}}
Fragment4.java代码:
public class Fragment4 extends Fragment {public Fragment4() {// TODO Auto-generated constructor stub}public 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.f4, null);return view;}@Overridepublic void onPause() {// TODO Auto-generated method stubsuper.onPause();}}
布局文件就是一个简单的文本,代码就不贴了!
我们先来看看程序运行的流程:
第一个Fragment被加载:
-----Fragment1->>onAttach
-----Fragment1->>onCreate
-----Fragment1->>onCreateView
-----Fragment1->>onActivityCreated
-----Fragment1->>onStart
-----Fragment1->>onResume
第二个Fragment被加载:
-----Fragment1->>onPause
-----Fragment1->>onStop
-----Fragment1->>onDestroyView
-----Fragment2->>onAttach
-----Fragment2->>onCreate
-----Fragment2->>onCreateView
-----Fragment2->>onActivityCreated
-----Fragment2->>onStart
-----Fragment2->>onResume
第三个Fragment被加载:
-----Fragment2->>onPause
-----Fragment2->>onStop
-----Fragment2->>onDestroyView
回退到第二个Fragment:
-----Fragment2->>onCreateView
-----Fragment2->>onActivityCreated
-----Fragment2->>onStart
-----Fragment2->>onResume
demo演示效果:
- Fragment学习之回退栈的管理
- Fragment的回退栈管理分析
- (5)Fragment回退栈的管理
- fragment管理之transaction
- fragment嵌套fragment的管理
- 对于activity与fragment回退栈的管理
- android基础之fragment的学习
- Fragment学习之findFragmentById的使用
- Fragment学习之ListFragment的使用
- Android 学习之Fragment的创建
- android学习之fragment的简单使用
- Fragment学习之findFragmentById的使用
- fragment的管理
- fragment的管理
- Google 关于 管理Fragment通信的 示例APP 学习
- Fragment学习(二): 管理Fragment和Fragment通讯
- android Fragments之管理fragment
- android Fragments之管理fragment
- C++ MD5加密实现
- 【nodeJS】什么是require?
- Javassist Enhancement failed:
- 使用 java command 分析hadoop集群
- 投掉了也许是人生中最后的一篇论文
- Fragment学习之回退栈的管理
- 宏定义的相关知识
- 实现String类
- maven settings配置
- 是否上传
- EBS的Jar文件
- 软件项目报价方法
- Handler导致内存泄露分析
- 【嵌入式】——嵌入式学习书籍推荐