Android——fragment

1. FragmentActivity和Activity

Fragment是Android3.0添加的,3.0可以在Activity中直接使用Fragment,为了兼容低版本(3.0之前)的,就要使用到android.support.v4.jar包中FragmentActivity,它提供了一些操作Fragment的方法,使和Activity中一样。

API原文:

FragmentActivity is a special activity provided in the Support Library to handle fragments on system versions older than API level 11. If the lowest system version you support is API level 11 or higher, then you can use a regular Activity.

FragmentActivity是支持库中提供的一种特殊的Activity,用于处理早于API级别11的系统版本上的Fragment。如果所支持的最低系统版本是API级别11或更高版本,则可以使用常规Activity。

所以就是总结来说既是:

minSdkVersion < 11:继承FragmentActivity, 调用getSupportFragmentManager() 获取Fragment管理器
minSdkVersion >= 11:继承Activity,调用getFragmentManager() 获取Fragment管理器

2. Fragment的生命周期

在这里插入图片描述
注意:除了onCreateView,其他的所有方法如果你重写了,必须调用父类对于该方法的实现

3. 静态使用Fragment

直接把Fragment当成普通的控件,写在Activity的布局文件中:

1)实现一个Fragment,包括fragment.xml布局文件和继承Fragment的类,重写onCreateView决定Fragemnt的布局。

public class MyFragment extends Fragment
{
	@Override
	public View onCreateView(LayoutInflater inflater, ViewGroup container,
			Bundle savedInstanceState)
	{
		View view = inflater.inflate(R.layout.my_fragment, container, false);
		});
		return view;
	}
}

2)在Activity中声明此Fragment,就当和普通的View一样
Activity的布局文件:

<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/my_fragment"
        android:name="com.test.example.MyFragment"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
 
</RelativeLayout>
4. 动态使用Fragment

1)同上实现一个Fragment
2)在主Activity中使用该Fragment

		FragmentManager fm = getFragmentManager();
		FragmentTransaction transaction = fm.beginTransaction();
		fragment = new MyFragment();
		transaction.replace(R.id.my_fragment, fragment);
		transaction.commit();
5. Fragment常用的三个类

android.app.Fragment 主要用于定义Fragment

android.app.FragmentManager 主要用于在Activity中操作Fragment

android.app.FragmentTransaction 保证一些列Fragment操作的原子性

a、获取FragmentManage的方式:

getFragmentManager() // v4中,getSupportFragmentManager

b、主要的操作,都是FragmentTransaction的方法

FragmentTransaction transaction = fm.benginTransatcion();//开启一个事务

transaction.add() //往Activity中添加一个Fragment

transaction.remove()

从Activity中移除一个Fragment,如果被移除的Fragment没有添加到回退栈,这个Fragment实例将会被销毁。

transaction.replace()

使用另一个Fragment替换当前的,实际上就是remove()然后add()的合体

transaction.hide()

隐藏当前的Fragment,仅仅是设为不可见,并不会销毁

transaction.show()

显示之前隐藏的Fragment

detach()

会将view从UI中移除,和remove()不同,此时fragment的状态依然由FragmentManager维护。

attach()

重建view视图,附加到UI上并显示。

transatcion.commit()//提交一个事务

注意:常用Fragment的哥们,可能会经常遇到这样Activity状态不一致:State loss这样的错误。主要是因为:commit方法一定要在Activity.onSaveInstance()之前调用。

参考:Android Fragment 真正的完全解析(上

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值