您的位置:首页 > 移动开发 > Android开发

Android之 Fragment

2014-08-23 13:02 155 查看
什么是Fragment:

Android是在Android 3.0 (API level 11)开始引入Fragment的。

可以把Fragment想成Activity中的模块,这个模块有自己的布局,有自己的生命周期,单独处理自己的输入,在Activity运行的时候可以加载或者移除Fragment模块。

可以把Fragment设计成可以在多个Activity中复用的模块。

当开发的应用程序同时适用于平板电脑和手机时,可以利用Fragment实现灵活的布局,改善用户体验。

Fragment的意义:

Android在3.0中引入了fragments的概念,主要目的是用在大屏幕设备上--例如平板电脑上,支持更加动态和灵活的UI设计。平板电脑的屏幕要比手机的大得多,有更多的空间来放更多的UI组件,并且这些组件之间会产生更多的交互。Fragment允许这样的一种设计,而不需要你亲自来管理 viewhierarchy的复杂变化。 通过将activity的布局分散到fragment中, 你可以在运行时修改activity的外观,并在由activity管理的back stack中保存那些变化.

例如, 一个新闻应用可以在屏幕左侧使用一个fragment来展示一个文章的列表,然后在屏幕右侧使用另一个fragment来展示一篇文章--2个fragment并排显示在相同的一个activity中,并且每一个fragment拥有它自己的一套生命周期回调方法,并且处理它们自己的用户输入事件。 因此, 取代使用一个activity来选择一篇文章而另一个activity来阅读文章的方式,用户可以在同一个activity中选择一篇文章并且阅读, 如图所示:

package com.topcsa.test_fragment;

import android.app.Activity;
import android.app.ActionBar;
import android.app.Fragment;
import android.app.FragmentManager;
import android.app.FragmentTransaction;
import android.content.res.Configuration;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.os.Build;

public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

}

public static class DetailActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
// 判断是否为横屏
if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) {
finish();
return;
}
if (savedInstanceState == null) {
//在初始化时,插入一个显示详细内容的Fragment
//实例化DetailFragment对象
DetailFragment detail = new DetailFragment();
//设置传递的参数
detail.setArguments(getIntent().getExtras());
//添加一个显示详细内容的Fragment
getFragmentManager().beginTransaction()
.add(android.R.id.content, detail).commit();
}
}
}

}


View Code

最后,别忘了清单文件的配置:(内部Activity的注册)

<activity android:name="com.topcsa.test_fragment.MainActivity$DetailActivity"
android:label="详细内容"></activity>


新闻阅读Demo下载:http://download.csdn.net/detail/af74776/7806353

本文重点参考了的文章(基本上算是大汇总吧):/article/1391908.html

                     /article/4672815.html

                     /article/4843807.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: