Android学习路线(二十一)运用Fragment构建动态UI——创建一个Fragment

你可以把fragment看成是activity的模块化部分,它拥有自己的生命周期,接受它自己的输入事件,你可以在activity运行时添加或者删除它(有点像是一个“子activity”,你可以在不同的activity中重用它)。本课将向你展示如何使用Support Libaray继承 Fragment 类来让你的应用能够兼容正在运行Android
1.6的设备。

提示: 如果你决定你的应用需求的最低API级别是11或者更高,那么你不需要使用Support Library,你可以直接使用包含Fragment类的平台相关的APIs。本课主要重点是使用Support Library的APIs,这和已经包含了Fragment类的平台版本的区别是使用了一个指定的包签名以及一些稍微不同的API名称。

在你开始这堂课之前,你必须要设置好你的项目,让他使用Support Library。如果你之前没有使用过Support Library,跟着Support Library Setup 文档来设置你的项目使用v4库。你也可以使用v7
appcompat
 库让你的应用activity能够使用action bar,它能够兼容到Android 2.1 (API level 7) 并且同样包含Fragment APIs。

创建一个Fragment



要创建一个Fragment,首先继承Fragment 类,然后覆盖主要的生命周期方法来插入了你的应用逻辑,类似你在Activity 类中所做的。

创建一个Fragment 与activity的一个不同点是,你必须使用onCreateView() 回调方法来定义布局。事实上,你只需要覆盖这一个回调方法就能够让这个fragment工作。下面是一个简单的fragment指定布局的例子:

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.ViewGroup;

public class ArticleFragment extends Fragment {
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        return inflater.inflate(R.layout.article_view, container, false);
    }
}

就像是一个activity,fragment需要实现其他的回调方法,这样就能够允许你在它在actvity中被添加或移除时管理它的状态,就像是activity切换时它的生命周期状态。例如,当activity的onPause() 方法被调用,所有它内部的fragment都会收到onPause()方法的回调。

更多关于fragment生命周期以及回调方法的信息,请查看Fragments 开发向导。

使用XML向activity中添加一个fragment



由于fragment是可重用的,模块化UI组件,它的每个实例都必须和一个父FragmentActivity关联。你可以通过在你的activity的XML布局文件中定义fragment来获取这个关联。

提示: FragmentActivity 是在Support
Library中提供的特殊的activity,用于处理在低于API级别为11的系统上使用fragment。如果你支持的最低系统版本的API级别是11或者更高,那么你可以直接使用普通的Activity

下面是一个在大屏设备布局上添加了两个fragment的例子。

res/layout-large/news_articles.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">

    <fragment android:name="com.example.android.fragments.HeadlinesFragment"
              android:id="@+id/headlines_fragment"
              android:layout_weight="1"
              android:layout_width="0dp"
              android:layout_height="match_parent" />

    <fragment android:name="com.example.android.fragments.ArticleFragment"
              android:id="@+id/article_fragment"
              android:layout_weight="2"
              android:layout_width="0dp"
              android:layout_height="match_parent" />

</LinearLayout>

贴士: 更多关于为不同屏幕尺寸创建布局的信息,请查看支持不同的屏幕尺寸。

然后再activity中应用这个布局。

import android.os.Bundle;
import android.support.v4.app.FragmentActivity;

public class MainActivity extends FragmentActivity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.news_articles);
    }
}

如果你使用的是v7 appcompat library,你的activity中应该要使用ActionBarActivity,它是FragmentActivity 的子类(更多信息,请查看Android学习路线(七)设置Action
Bar
)。

提示: 当你在activity的XML布局文件中添加一个fragment时,你不能再运行时移除这个fragment。如果你希望在用户交互中隐藏于现实你的fragment,你就必须在activity第一次启动时将fragment添加到activity中,在下堂课中会讲到。

Android学习路线(二十一)运用Fragment构建动态UI——创建一个Fragment,布布扣,bubuko.com

时间: 2024-10-03 22:48:08

Android学习路线(二十一)运用Fragment构建动态UI——创建一个Fragment的相关文章

Android学习路线(二十)运用Fragment构建动态UI

要在Android系统上创建一个动态或者多面板的用户界面,你需要将UI组件以及activity行为封装成模块,让它能够在你的activity中灵活地切换显示与隐藏.你可以使用Fragment类来创建这些模块,它们能够表现得有些像嵌套的activity,它们定义着自己的布局,管理自己的生命周期. 当一个fragment指定了它自己的布局,它可以在activity中和其他的fragment配置为不同的组合,这样就能够为不同的屏幕尺寸来修改你的布局配置(在小屏幕上一次展现一个fragment,而在大屏

Android学习路线(二十二)运用Fragment构建动态UI——构建一个灵活的UI

先占个位置,下次翻译 :p When designing your application to support a wide range of screen sizes, you can reuse your fragments in different layout configurations to optimize the user experience based on the available screen space. For example, on a handset devi

Android学习路线(二十三)运用Fragment构建动态UI——Fragment间通讯

先占个位置,下次翻译 :p In order to reuse the Fragment UI components, you should build each as a completely self-contained, modular component that defines its own layout and behavior. Once you have defined these reusable Fragments, you can associate them with

Android学习路线(十一)管理Activity的生命周期

当一个用户进入,退出,再次进入你的应用时,你的应用中的Activity 会在它的生命周期的各个状态下切换.例如,当你的activity第一次启动,它出现在系统的前方接受用户的焦点.在这个过程中,Android系统调用了一系列的生命周期方法来设置UI和其他组件.如果用户执行了一个操作,启动了另一个activity或者切换到其它应用中,你的activity会移动到后台(这时activity已经不可见,但是它的实力和状态都保持不变),系统会调用另外的一些生命周期方法. 通过这些生命周期方法,你可以声明

Android学习笔记二十一.使用ContentProvider实现数据共享(四).操作系统(联系人)的ContentProvider

Android系统本身提供了大量的ContentProvider,例如联系人信息.系统的多媒体信息等,我们开发的应用程序主要是通过ContentResolver来调用系统的ContentProvider提供的query().insert().update()和delete()方法来获取Android内部的数据. 一.如何使用ContentResolver操作系统ContentProvider暴露的内部数据? 1.调用Activity的getContentResolver()获取ContentRe

android 学习随笔二十一(内容提供者 )

一.内容提供者* 应用的数据库是不允许其他应用访问的* 内容提供者的作用就是让别的应用访问到你的私有数据* 自定义内容提供者,继承ContentProvider类,重写增删改查方法,在方法中写增删改查数据库的代码,举例增方法 @Override public Uri insert(Uri uri, ContentValues values) { db.insert("person", null, values); return uri; }* 在清单文件中定义内容提供者的标签,注意必须

Android学习(二十一)OptionsMenu选项菜单

一.OptionsMenu选项菜单 在应用程序中点击功能按钮会弹出选项菜单,点击可以实现具体功能. 二.实现思路: 1.创建选项菜单: onCreateOptionsMenu(); 2.设置菜单项可用代码动态设置menu.add();还可以通过xml设置Menuinflater.infalte(R.menu.menu); 3.设置菜单的点击事件:onOptionsItemSelect(); 三.示例代码: 自定义菜单XML: <menu xmlns:android="http://sche

Android学习路线(二十四)ActionBar Fragment运用最佳实践

通过前面的几篇博客,大家看到了Google是如何解释action bar和fragment以及推荐的用法.俗话说没有demo的博客不是好博客,下面我会介绍一下action bar和fragment在实战中的应用,以及相关demo源码,希望和大家相互交流. 了解过fragment的同学们应该都知道,fragment是android 3.0版本才出现的的,因此如果要在支持android 3.0一下版本的工程中使用fragment的话是需要添加Support Library的.具体如何添加我就不再赘述

Android学习路线(四)构建一个简单的UI

Android应用的图形化用户界面的构建使用的是View 和 ViewGroup 对象的层次嵌套. View 对象通常是UI部件,例如 buttons 或者 text fields ,而 ViewGroup 是用来定义它的子布局如何排布的容器,它通常是不可见的,例如一个网格或者一个垂直的列表. Android提供XML词汇与View或者ViewGroup的子类的对应,这样的话你就可以通过XML元素的层级嵌套来定义你的UI. 另一种布局 使用XML声明UI比在运行时代码中声明更有用处可以在很多地方