- 浏览: 179475 次
- 性别:
- 来自: 广州
最新评论
-
just_thinking:
编程小白求问%p是什么意思
android:toXDelta="-100%p" -
哦买嘎:
好 没废话
android中scrollTo和scrollBy的理解 -
sujieahong:
android中scrollTo和scrollBy的理解 -
fyc0109:
小米测试无用。、
Toast显示和关闭自个控制的方法 -
lcsky:
这个方法很有才!成功实践!但愿Android后续版本不要改To ...
Toast显示和关闭自个控制的方法
Fragment 对比Activity - Android 碎片介绍
作者: Android 开发网原创 时间: 2011-02-01
Fragment 是Android honeycomb 3.0 新增的概念,Fragment 名为碎片不过却和Activity 十分相似,下面Android123 介绍下Android Fragment 的作用和用法。Fragment 用来描述一些行为或一部分用户界面在一个Activity 中,你可以合并多个fragment 在一个单独 的activity 中建立多个UI 面板,同时重用fragment 在多个activity 中. 你可以认为fragment 作为一个activity 中的一 节模块 ,fragment 有自己的生命周期,接收自己的输入事件,你可以添加或移除从运行中的activity.
一个fragment 必须总是嵌入在一个activity 中,同时fragment 的生命周期受activity 而影响,举个例子吧,当activity 暂停,那么所有在这个activity 的fragments 将被destroy 释放。然而当一个activity 在运行比如resume 时,你可以单独的 操控每个fragment ,比如添加或删除。
我们可以看到两个Activity 通过两个Fragment 合并到一个Activity 的布局方式,对于平板等大屏幕设备来说有着不错的展示面板。不过因为Fragment 和Activity 的生命周期都比较复杂,我们分别对比下:
创建一个fragment 你必须创建一个Fragment 的子类或存在的子类,比如类似下面的代码
public static class Android123Fragment extends Fragment
{
@Override
public View onCreateView
(LayoutInflater inflater,
ViewGroup container,
Bundle savedInstanceState) {
return inflater.inflate
(R.layout.android123_fragment, container, false);
}
}
Fragment 类的一些代码看起来有些像Activity 为了让大家了解清楚,Android 开发网给大家整理下Fragment 的生命周期如上图所示,部分类似Activity 的,我们详细解释
onCreate()
当fragment
创建时被调用,你应该初始化一些实用的组件,比如在fragment
暂停或停止时需要恢复的
onCreateView()
当系统调用fragment
在首次绘制用户界面时,如果画一个UI
在你的fragment
你必须返回一个View
当然了你可以返回null
代表这个fragment
没有UI.
那么如何添加一个Fragment 到Activity 中呢? Activity 的布局可以这样写
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android
"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent">
<fragment
android:name="com.android123.cwj.ArticleListFragment"
android:id="@+id/list"
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="match_parent" />
<fragment
android:name="com.android123.cwj.ArticleReaderFragment"
android:id="@+id/viewer"
android:layout_weight="2"
android:layout_width="0dp"
android:layout_height="match_parent"
/>
</LinearLayout>
一、 管理Fragment
管理Fragment 在你的Activity 你需要使用一个名为FragmentManager 的类,通过调用getFragmentManager() 方法来实例化该管理类在你的Activity 种。 FragmentManager 类一些主要的方法有通过findFragmentById() 来获取一个Activity 中有关Fragment 布局。当然还有类似 findFragmentByTag() 方法,以及唐Fragment 中出栈的popBackStack() 同时可以注册 addOnBackStackChangedListener() 管理. 具体的可以在android.app.FragmentManager 类中了解
二、 优化Fragment 事物处理
一个很好的特性在添加,删除,替换fragment 在Activity 时可以使用FragmentTransaction 类来提高批量处理的效率,这点和SQLite 的数据库更新原理类似。
FragmentManager fragmentManager = getFragmentManager();
//
实例化fragmentmanager
类
FragmentTransaction transaction = fragmentManager.beginTransaction
();
//
通过begintransaction
方法获取一个事物处理实例。
在这期间可以使用 add(), remove(), 以及 replace(). 最终需要改变时执行 commit() 即可,接下来我们写代码
transaction.replace
(R.id.fragment_container,
newFragment);
transaction.addToBackStack(null);
transaction.commit();
三、Fragment 和Activity 互相通讯
通常Fragment 中我们放入平时标准的控件或自定义的控件,基本上和Activity 一样,但是如何Fragment 中的View 布局也是放到Activity 中的,这里Android 开发网提示大家有两种方法来实现
View listView = getActivity().findViewById(R.id.cwj); // 通过getActivity 方法可以获取一个Activity 中的fragment ,这里的cwj 是一个fragment ,在activity 中的布 局如下:
<?xml version="1.0"
encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android
"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent">
<fragment
android:name="com.android123.cwj.ArticleListFragment"
android:id="@+id/cwj
"
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="match_parent" />
<fragment
android:name="com.android123.cwj.ArticleReaderFragment"
android:id="@+id/smart"
android:layout_weight="2"
android:layout_width="0dp"
android:layout_height="match_parent" />
</LinearLayout>
当然还有一种通过getFragmentManager 方法获取实例,ExampleFragment fragment = (ExampleFragment) getFragmentManager ().findFragmentById (R.id.cwj);
发表评论
-
异步加载注意的事项
2012-07-18 11:25 954CSDN上的这个系列文章《Android异步处理系列文章 ... -
回调函数模型
2012-07-16 16:05 1120public class Parent{ ... ... -
android ListView几个比较特别的属性
2012-06-12 10:42 1892由于这两天在做list ... -
android中Application使用
2012-06-03 11:16 2225--如想在整个应用中使用,在java中一般是使用静态变量,而在 ... -
TabWidget
2012-06-02 09:05 0通过TabWidget实现 这种方式主要是在布局中将TabW ... -
ViewGroup中bringToFront理解
2012-06-02 08:59 1964Android中的ViewGroup是通过一个Array来保存 ... -
android:toXDelta="-100%p"
2012-06-01 15:15 8052android:fromXDelta="0" ... -
ViewGroup手势
2012-05-31 17:04 1255二 View,ViewGroup的手 ... -
android中Shade应用
2012-05-14 08:39 1192先看下面的代码: ... -
TabWidget
2012-03-27 11:50 1118TabTest.java view ... -
Android 中Activity,Window和View之间的关系
2012-03-27 09:01 10827Activity是Android应用程序的载体,允许用户在其上 ... -
android中scrollTo和scrollBy的理解
2012-03-23 21:04 15566protected int mScrollX; ... -
VelocityTracker类
2012-03-23 20:37 1490用来追踪触摸事件(flinging事件和其他手势事件)的速率 ... -
关于onConfigurationChanged
2012-03-23 20:34 3029通过查阅Android API可以得知android: ... -
Android中自定义View的MeasureSpec使用
2012-03-23 20:32 1322一般来说,自定义控件都会去重写View的onMeasure方法 ... -
获取IamgeView中的图像
2012-03-09 21:57 1285从ImageView对象中获取图像的方法,就是Image ... -
android onGestureListener的方法(转)
2012-03-03 17:05 1830// 用户轻触触摸屏,由1个MotionEvent ACT ... -
Toast显示和关闭自个控制的方法
2012-02-27 12:10 7515Toast信息提示框之所以 ... -
RelativeLayout
2012-02-25 21:09 918第一类:属性值为true或false androi ...
相关推荐
2. **碎片(Fragment)**:Fragment是Android 4.0中一个重要的组件,用于支持多屏幕尺寸和多分辨率设备。测试时要确保Fragment的正确添加、删除、替换以及在不同屏幕尺寸上的显示效果。 3. **硬件加速**:ICS默认启用...
使用这些工具时,开发者需要注意适配Android 4.0(API级别14)的要求,例如兼容ICS的新特性,如Action Bar、Fragment等。同时,开发者还需要遵循Android的开发规范和最佳实践,以确保应用能在各种设备上正常运行。 ...
2. **选项菜单**:在Android 4.0中,选项菜单通常通过长按或者右上角的更多按钮触发。开发者需要创建自定义的`OptionsMenu`,并确保在不同的设备上都能正确显示和响应。 3. **列表视图**:Android 4.0的列表视图(`...
1. **Activity和Fragment**:在Android 4.0中,`Activity`是应用的基本单元,而`Fragment`用于构建多屏和动态布局。浏览器的界面由多个`Fragment`组成,如地址栏、书签、历史记录等。这些`Fragment`的实现和交互逻辑...
2. **ActionBar**:这是Android 4.0中的一个重大改进,它为应用程序提供了顶部导航区域,可以放置应用的logo、标题以及操作按钮。在登录页面,ActionBar可能包含“返回”按钮或“注册”链接,方便用户操作。 3. **...
在Android 4.0(Ice Cream Sandwich)系统中,MusicPlayer是系统内置的音乐播放应用,它提供了丰富的功能,如播放本地音乐库、播放列表管理、音效设置等。源码分析可以帮助我们深入理解Android多媒体处理、服务、...
Android 4.0 Browser浏览器源代码是Android操作系统中内置浏览器的开发基础,它包含了实现一个功能完备、高效、用户友好的Web浏览体验的所有组件。这个模块涵盖了应用层的源码,为开发者提供了一个深入理解Android...
在Android 4.0中,大部分设置项都是通过PreferenceFragment实现的,这是一种基于Preference类的UI组件,可以方便地创建设置界面。 1. **PreferenceFragment**:这是展示设置项的容器,负责加载XML布局文件中的偏好...
5. **向后兼容性**:为了保证向前兼容性,Android 4.0在通知条的默认布局上保持了一致性,这意味着在较早版本Android中开发的应用程序仍然可以在新系统上正常显示通知。 #### 二、可变大小的窗口部件(Resizable ...
在Android中,菜单项是通过` onCreateOptionsMenu()`和` onOptionsItemSelected()`方法在`Activity`或`Fragment`中创建和处理的。我们通常使用`MenuItem`对象的`setIcon()`方法来设置图标。例如: ```java @...
总结起来,`android4.0 tabhost demo`是一个展示如何在Android 4.0环境中利用TabHost组件创建多标签应用的实例,通过结合TabSpec、Intent和ViewPager,可以实现滑动切换标签的效果。这个实例对于理解Android中的...
Android 4.0 SDK(软件开发工具包)API Level 14,是Google为开发者提供的一个关键工具,用于创建和测试针对Android Ice Cream Sandwich (ICS) 操作系统的应用。这个版本的SDK是Android系统发展中的一个重要里程碑,...
本资源提供的"仿Android4.0左右滑动切换Tab的UI的源代码.rar"是一个典型的Android界面设计示例,旨在帮助开发者实现类似Android 4.0系统中那种通过左右滑动来切换不同Tab的功能。这一设计模式常见于许多Android应用...
3. **过渡动画**:在Android 4.0中,过渡动画(Transition Animation)用于在Activity之间或Fragment之间的切换,提供更加平滑的界面转换体验。这包括了Activity的ActivityTransitionAPI和Fragment的...
在深入探讨Android 4.0中的“Contacts”源码之前,我们先简要回顾一下Android 4.0(代号Ice Cream Sandwich)的历史背景。2011年10月,Google发布了Android 4.0,这是一个重大更新,旨在统一手机和平板电脑的用户...
这个"仿Android4.0左右滑动切换Tab的UI的源代码.zip"压缩包提供了一个实现此类功能的示例。下面将详细解释这个源代码中的关键知识点。 1. **ViewPager组件**: ViewPager是Android SDK中的一个视图容器,允许用户...
通过在ViewPager中添加和管理Fragment,我们可以实现类似Android 4.0联系人应用那样的分页浏览效果,同时保持界面的灵活性和可扩展性。 **联系人UI的设计** 在仿制过程中,开发者可能会关注以下几个关键点: 1. **...
根据提供的文件信息,以下是关于...以上是根据提供的文件内容,对《Android 4.0开发教程 Apress》一书中各个章节知识点的概括。由于文档内容有限,以上内容仅为梳理出的主要知识点,实际书籍内容将更加详细和全面。