第4章深入理解Activity与Fragment.ppt_第1页
第4章深入理解Activity与Fragment.ppt_第2页
第4章深入理解Activity与Fragment.ppt_第3页
第4章深入理解Activity与Fragment.ppt_第4页
第4章深入理解Activity与Fragment.ppt_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第4章 深入理解Activity与Fragment Activity学习内容 建立和配置Activity启动和关闭ActivityActivity间数据的交换Activity的生命周期启动模式 建立 配置和使用Activity Activity是Android应用最常见的组件之一 向提供用户屏幕显示 并与用户交互 一个应用Application中 往往包括多个Activity 不同的Activity向用户呈现不同的操作界面 多个Activity组成Activity栈 当前活动的Activity位于栈顶 创建Activity的要点 一个Activity就是一个类 并且这个类要继承Activity或其子类 创建Activity的要点 创建一个Activity需要实现个或多个方法必须复写onCreate 方法 该方法会在Activity创建时被回调 onCreate 方法中的工作包括 1 调用父类的onCreate方法 super onCreate 2 初始化界面 setContentView 3 与组件交互 findViewById 当一个Activity类定义出来之后 这个Activity类何时被实例化 它包含的方法何时被调用 这些都不是由开发者决定的 应由Android系统决定 每一个Activity都需要在AndroidManifest xml文件当中进行配置 P233 5 从已有程序观察Activity java 1 2 从已有程序观察AndroidManifest xml 3 配置Activity Android应用要求所有应用程序组件都必须显式进行配置应用程序组件包括 Activity Service ContentProvider以及BroadcastReceiver在AndroidManifest xml清单文件中配置Activity配置属性 例1 要求 已有资源 在chapter04的基础上创建一个用户提交结果的Activity 启动 关闭Activity P235 Activity启动其他Activity的方法startActivity intent 启动其他ActivitystartActivityForResult intent requestCode 以指定的请求码requestCode启动其他Activity 而且程序会等到新启动的Activity的返回结果 关闭Activityfinish 结束当前Activity 10 Intent的基本作用 11 Intent是一种运行时绑定机制 他能在应用程序运行的过程中连接两个不同的组件 实现组件间的跳转 用来描述一个意图 请求 包含了动作的产生组件 接收组件和传递的数据信息 Intent的基本作用 使用Intent显式启动Activity方法创建一个Intent指定当前的应用程序上下文以及要启动的Activity把创建好的这个Intent作为参数传递给startActivity 方法注意 在AndroidManifest xml文件中注册这两个Activity被启动Activity在注册时不需要使用元素进行配置 android content ActivityNotFoundException Unabletofindexplicitactivityclass com example chapter04 com example chapter04 resultActivity haveyoudeclaredthisactivityinyourAndroidManifest xml 使用Bundle在Activity之间交换数据可以将需要交换的数据放入Intent的Extras属性 送出数据 put1 Intent putExtra keyname value 2 Intent putExtras Bundle putExtra 值名字 值 Intent putExtra name shuming String类型数据 Intent putExtra age 100 int类型数据 putExtras Bundle 可以把零散的数据打包成一个包BundleBundle putXXX keyname value Bundle putString name shuming Bundle putInt age 100 2020 3 7 13 使用Bundle在Activity之间交换数据 接收数据需要根据数据传送的方法来决定接收方法Intent putExtra keyname value value Intent getXXXExtra keyname Intent getStringExtra name Intent putExtras Bundle Bundlebundle Intent getExtras bundle getXXX 2020 3 7 14 例2 改写前例 后启动的Activity获取第一个Activity中内容 Intentintent getIntent intent getStringExtra name intent putExtra name value startActivity intent 获取Activity返回值 一 P241 通过使用startActivity Intent 方法启动Activity后 启动后的两个Activity之间相互独立 没有任何的关联 在很多情况下 后启动的Activity是为了让用户对特定信息进行选择 在关闭这个Activity后 用户的选择信息需要返回给未关闭的那个Activity 按照Activity启动的先后顺序 先启动的称为父Activity 后启动的称为子Activity 如果需要将子Activity的部分信息返回给父Activity 需要使用startActivityForResult 方法启动子Activity 获取Activity返回值 二 获取子Activity的返回值 一般可以分为以下三个步骤用startActivityForResult 方法启动子Activity子Activity用setResult 方法返回值在父Activity中通过重写父Activity的onActivityResult方法获取返回值 Example ActivityForResult 例3启动Activity并返回结果 子Activtiy对ListView选项选中时进行事件侦听Intentintent getIntent intent putExtra school schoolName position setResult Activity RESULT OK intent finish 父Activity启动子ActivityIntentintent newIntent startActivityForResult intent 1 请求子Activity 结果返回父Activity 重写onActivityResult intrequestCode intresultCode Intentdata 对结果进行处理 该Activity继承ListActivity 获取Activity返回值 三 以startActivityForResult 方法启动子Activity调用startActivityForResult Intent requestCode 函数参数Intent用于决定启动哪个Activity参数requestCode是唯一的标识子Activity的请求码 获取Activity返回值 四 设置子Activity的返回值在子Activity调用finish 函数关闭前 调用setResult 函数将所需的数据返回给父Activity setResult 函数有两个参数结果码返回值 获取Activity返回值 五 设置子Activity的返回值结果码表明了子Activity的返回状态 通常为Activity RESULT OK或者Activity RESULT CANCELED 或自定义的结果码 结果码均为整数类型返回值封装在Intent中 子Activity通过Intent将需要返回的数据传递给父Activity Intentdata newIntent data putExtra school schoolName arg2 setResult RESULT OK data finish 获取Activity返回值 六 在父Activity中获取返回值当子Activity关闭时 启动它的父Activity的onActivityResult 函数将被调用 如果需要在父Activity中处理子Activity的返回值 则重载此函数即可 此函数的语法如下第1个参数requestCode 用来表示是哪一个子Activity的返回值第2个参数resultCode用于表示子Activity的返回状态第3个参数data是子Activity的返回数据 返回数据类型是Intent 获取Activity返回值 七 if requestCode 1 resultCode RESULT OK 提取Intent中存放的数据 23 Activity的生命周期 Activity大致经过如下4个状态 活动状态 running 位于前台 用户可见 可以获得焦点暂停状态 pause 其他Activity活动 该Activity可见 但不能获得焦点停止状态 stop 该Activity不可见 不能获得焦点销毁状态 destory 结束 Activity的生命周期 Activity的4种加载模式 配置Activity时可指定android launchMode属性standard 标准模式 默认的加载模式总会为目标Activity在当前Task中创建一个新的实例singleTop Task顶单例模式如果目标Activity已经在栈顶 则不启动新实例 否则与标准模式一样singleTask Task内单例模式如果目标Activity不在栈顶 则把目标Activity上面的所有Activity出栈 不会重复创建实例singleInstance 全局单例模式不会重复创建实例 且目标Activity在全新的Task里 这个Task里只有这一个目标Activity Activity的4种加载模式 例1 ActivityExample02ActivityExample02 java 父ActivityActivity02 java 子Activity 27 Activity的加载模式 上面的例子 如果在两个Activity中来回切换一次 在Activity栈中形成如图所示Activity实例 利用back键 可以依次弹出activity 即在SecondActivity中用Intentintent newIntent Activity02 this ActivityExample02Main class startActivity intent 将启动新的Activity 不是返回如果想要利用上面同样的代码 做返回 可以修改ActivityExample02的加载模式为singleTask P253 如何创建Fragment如何在Activity中嵌入Fragment例实现Tab导航 参考P185 如何从Activity中向Fragment传递数据如何从Fragment向Activity传递数据 Fragment详解 Fragment是Android3 0引入的新API 可以理解成Activity片段Fragment必须被嵌入到Activity中使用Fragment的生命周期受所在Activity生命周期控制 一个Activity可以组合多个Fragment 一个Fragment也可以被多个Activity复用 特征 Fragment总是作为Activity界面的组成部分 Fragement可调用getActivity 获得它所在的ActivityAcitivity可调用FragmentManager的findFragmentById 来获取Fragment在Activity运行过程中 可调用FragementManager的add remove replace 动态添加 删除 替换Fragment 创建Fragment 继承ListFragment该类实现列表的Fragment 不需要加载布局 只要实现setListAdapter 即可在上层Activity布局中加元素 并加id进行标识Activity的onCreate 方法中加载Fragment获获取FragmentManager管理FragmentManagermang getFragmentManager 取FragmentTransation事务FragmentTransactiontrans mang beginTransaction 用事务 replace 进行替换trans replace R id bookNameList newFragment01 用事务提交mit 例1 创建一个ListFragment并嵌入Activity 创建方法Fragment必须继承Fragment基类 另外还可以继承DialogFragment ListFragment PreferenceFragment和WebViewFragm

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论