Android开发之Fragment的介绍、使用及生命周期

Fragment官网介绍-http://developer.android.com/guide/components/fragments.html

1.Fragment简介及两个版本介绍

Fragment是Android3.0(API 11)引入的。

Fragment和Activity的关系(引用官网原话):You can combine multiple fragments in a single activity to build a multi-pane UI and reuse a fragment in multiple activities

Fragment分为android.app.Fragment(framework version)和android.support.v4.app.Fragment(support version)。

假如App的最小API是11,那么最好使用android.app.Fragment。

假如App为了兼容2.3等2.0的Android版本,那么就使用android.support.v4.app.Fragment。

不过现在的2.3市场占用率已经很低了,Android的API 22都发布了,新开发的app完全可以使用android.app.Fragment。

使用android.app.Fragment和android.support.v4.app.Fragment在开发中有一些不同,官方原话:

The main differences when using this support version instead of the framework version are:

  • Your activity must extend FragmentActivity
  • You must call getSupportFragmentManager() to get the FragmentManager

意思是使用android.support.v4.app.Fragment的时候,1.activity必须继承FragmentActivity  2.在获取FragmentManager的时候,使用getSupportFragmentManager()方法。

容易出现错误的地方:一个app中不同的Fragment使用不同的Fragment版本,会造成使用一些方法的时候,报错

The method replace(int, Fragment) in the type FragmentTransaction is not applicable for the arguments (int, AnotherFragment)

把引入的Fragment版本修改成一样的就不会报错了。

2.Fragment的使用

在Activity中显示Fragment、替换Fragment以及实现返回到上一个Fragment

a.在MainActivity中显示PlaceholderFragment

 1 import android.app.Activity;
 2 import android.os.Bundle;
 3
 4 public class MainActivity extends Activity {
 5
 6     @Override
 7     protected void onCreate(Bundle savedInstanceState) {
 8         super.onCreate(savedInstanceState);
 9         setContentView(R.layout.activity_main);
10         if (savedInstanceState == null) {
11             getFragmentManager().beginTransaction()
12                     .add(R.id.container, new PlaceholderFragment()).commit();
13         }
14     }
15 }

b.MainActivity中使用AnotherFragment替换PlaceholderFragment,通过点击按钮实现Fragment的替换显示。

 1 public class PlaceholderFragment extends Fragment {
 2
 3     public PlaceholderFragment() {
 4     }
 5
 6     @Override
 7     public View onCreateView(LayoutInflater inflater, ViewGroup container,
 8             Bundle savedInstanceState) {
 9         View rootView = inflater.inflate(R.layout.fragment_main, container,false);
10         rootView.findViewById(R.id.button1).setOnClickListener(new OnClickListener() {
11
12             @Override
13             public void onClick(View v) {
14                 // TODO Auto-generated method stub
15                 getFragmentManager().beginTransaction().addToBackStack(null).replace(R.id.container, new AnotherFragment()).commit();                                                   //addToBackStack(tag)方法,把这个Fragment加入到backStack中,实现返回。
16             }
17         });
18         return rootView;
19     }
20 }

c.从AnotherFragment返回到PlaceholderFragment,通过点击按钮实现;同时在PlaceholderFragment中的addToBackStack()方法,实现了按Back键返回操作。

 1 public class AnotherFragment extends Fragment {
 2
 3     @Override
 4     public View onCreateView(LayoutInflater inflater,
 5             @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
 6         // TODO Auto-generated method stub
 7         View root=inflater.inflate(R.layout.anotherfragment, container,false);
 8
 9         root.findViewById(R.id.btnReturnFragment).setOnClickListener(new OnClickListener() {
10
11             @Override
12             public void onClick(View v) {
13                 // TODO Auto-generated method stub
14                 getFragmentManager().popBackStack();   //当前Fragment弹出BackStack,显示上一个Fragment。
15             }
16         });
17         return root;
18     }
19
20
21 }

3.Fragment的生命周期

引用官网的生命周期图

在开发过程中,一般实现onCreate(),onCreateView(),onPause()方法就可以满足需求了。

时间: 2024-10-10 02:54:31

Android开发之Fragment的介绍、使用及生命周期的相关文章

Android开发之Fragment详解

Android开发之Fragment学习 1.简介: Fragment是Android 3.0引入的新API. Fragment代表了 Activity的子模块,因此可以把Fragment理解成Activity片段.Fragment用于自己的生命周期,也可以接受它自己的输入事件. Fragment必须被"嵌入" Activity中使用,因此虽然Fragment也拥有自己的生命周期,但Fragment的生命周期会受它所在的Activity的生命周期的控制.例如,当Activity暂停时,

android开发之Fragment加载到一个Activity中

Fragments 是android3.0以后添加的.主要是为了方便android平板端的开发.方便适应不同大小的屏幕.此代码是为了最简单的Fragment的使用,往一个Activity中添加Fragment,主要涉及的知识点有:1.Fragment类的创建,2.Fragment的添加3.无UI的 Fragment的添加,根据Tag找回Fragment Fragment对应的Xml布局文件, <LinearLayout xmlns:android="http://schemas.andro

Android开发之Fragment的替换显示

一般写程序时我们都是得到FragmentManager,然后开启一个事务,然后进行Fragment的替换,然后提交事务. //1.得到FragmentManger FragmentManager fm = getSupportFragmentManager(); // //2.开启事务 FragmentTransaction transaction = fm.beginTransaction(); // //3.替换 transaction.replace(R.id.fl_content, fr

Android开发之Fragment传递参数的几种方法

Fragment在Android3.0开始提供,并且在兼容包中也提供了Fragment特性的支持.Fragment的推出让我们编写和管理用户界面更快捷更方便了. 但当我们实例化自定义Fragment时,为什么官方推荐Fragment.setArguments(Bundle bundle)这种方式来传递参数,而不推荐通过构造方法直接来传递参数呢?为了弄清这个问题,我们可以做一个测试,分别测试下这两种方式的不同 首先,我们来测试下通过构造方法传递参数的情况 public class FramentT

Android开发之WebService介绍

经常有网友问:“在Android平台如何调用WebService”?经过沟通我发现,甚至有些朋友连什么是WebSerivce都不知道就在问怎么使用,更别说和WebService有关的SOAP.WSDL这类“火星”名词了.所以,我就想在讲解Android平台如何调用WebSerivce之前,先来介绍下WebService,看看它到底有多神秘.      记得我的硕士论文题目中就包含“Web Service”这个词,当时还是花了大量时间去研究Web Service在系统集成.企业应用整合方面的应用:

Android开发之IPC进程间通信-AIDL介绍及实例解析

一.IPC进程间通信 IPC是进程间通信方法的统称,Linux IPC包括以下方法,Android的进程间通信主要采用是哪些方法呢? 1. 管道(Pipe)及有名管道(named pipe):管道可用于具有亲缘关系进程间的通信,有名管道克服了管道没有名字的限制,因此,除具有管道所具有的功能外,它还允许无亲缘关系进程间的通信:   2. 信号(Signal):信号是比较复杂的通信方式,用于通知接受进程有某种事件发生,除了用于进程间通信外,进程还可以发送信号给进程本身:linux除了支持Unix早期

Android开发之Tween(补间动画)完全解析(下)

欢迎转载,转载请注明出处:http://blog.csdn.net/dmk877/article/details/51980734 在上一篇文章中,我们详细讨论了Tween动画的xml的实现以及interpolator的使用,相信通过上篇文章大家对Tween动画的xml属性的配置会有一个详细的理解,当然这篇文章也是承接上篇文章,所以强烈建议先阅读上篇文章:Android开发之Tween(补间动画)完全解析(上),这篇文章将从代码的角度实现上篇文章的效果.如有疑问请留言,如有谬误欢迎批评指正. T

Android开发之Html类详解

在进行Android开发中经常回忽略Html类.这个类其实很简单,就是将HTML标签文本解析成普通的样式文本.下面就让我么看一下这个类的具体介绍. 类结构: java.lang.Object    ? android.text.Html 类概述: 这个类用于处理的HTML字符串并将其转换成可显示的样式文本.但并不是所有的HTML标记的支持. 公有方法: 说其简单是应为它就有四个方法: Public Methods static String escapeHtml(CharSequence tex

Android开发之InstanceState详解

Android开发之InstanceState详解 本文介绍Android中关于Activity的两个神秘方法:onSaveInstanceState() 和 onRestoreInstanceState(),并且在介绍这两个方法之后,再分别来实现使用InstanceState保存和恢复数据功能.Android实现屏幕旋转异步下载效果这样两个示例. 首先来介绍onSaveInstanceState() 和 onRestoreInstanceState() .关于这两个方法,一些朋友可能在Andr