码迷,mamicode.com
首页 > 移动开发 > 详细

Android · Fragment

时间:2014-12-10 21:03:56      阅读:194      评论:0      收藏:0      [点我收藏+]

标签:android   io   ar   os   使用   java   on   文件   art   

基本知识

Fragment支持在不同的Activity中使用并且可以处理自己的输入事件以及生命周期方法等。可以看做是一个子Activity

Fragment的生命周期方法依赖于Activity的生命周期,例如一个Activity的onPause()的生命周期方法被调用的时候这个Activity中的所有的Fragment的onPause()方法也将被调用。

支持包

3.0以下、1.6及以上版本:

导入android.support.v4.*;

添加SDK下的jar到libs文件夹(/extras/android/support/v4/android-support-v4.jar)

使用Fragment的Activity请继承FragmentActivity而不是Activity

3.0或以上版本:

直接继承Activity

创建含Fragment的Activity

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_fragment_main);
		if (savedInstanceState == null) {
			getFragmentManager().beginTransaction()
					.add(R.id.container, new PlaceholderFragment()).commit();
		}
	}

 

其中R.id.container来自R.layout.activity_fragment_main

<FrameLayout
...
    android:id="@+id/container"
...
    tools:ignore="MergeRootFrame" />

在此Activity没有东西,在layout中设置MergeRootFrame,因此不会显示父Activity

创建Activity后,经过if (savedInstanceState == null)判断是否首次启动,第一个界面直接跳转到一个Fragment。

 

创建自己的Fragment

	public static class MyFragment extends Fragment {

		public MyFragment() {
		}

		@Override
		public View onCreateView(LayoutInflater inflater, ViewGroup container,
				Bundle savedInstanceState) {
			View rootView = inflater.inflate(R.layout.myfragment_main,
					container, false);
			return rootView;
		}
	}

添加Fragment到Activity

①直接将上面的代码放在Activity中

②在外部单独一个java文件写好,然后在Activity的layout中添加,其中android:name属性填上自己创建的fragment的完整类名

    <fragment android:name="com.example.news.ArticleListFragment"
            android:id="@+id/list"
            android:layout_weight="1"
            android:layout_width="0dp"
            android:layout_height="match_parent" />

切换Fragment来显示

	FragmentTransaction ft=getFragmentManager().beginTransaction();
	ft.replace(R.id.container, new MyFragment());//替换Fragment。如果继续add,则会出现photoshop的层效果
	ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);//简单动画
	ft.addToBackStack(null);
	ft.commit();

需要说明的是,如果想按后退键能返回上一个Fragment,则需要addToBackStack();否则不需要这行代码。

 

Fragment里有setArguments方法传递extras

Activity和Fragment之间的通信

①在Fragment中定义一个接口

②在这个接口中定义一个方法

③在Fragment的onAttach()方法中调用这个接口中的方法

④让Activity实现这个方法来完成Activity和Fragment之间的通信

Android · Fragment

标签:android   io   ar   os   使用   java   on   文件   art   

原文地址:http://www.cnblogs.com/manhua/p/4156247.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!