




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、如何为应用添加新的Activity:第一、在应用中创建一个继承Activity的类(OneActivity) view sourceprint?1 public class OneActivity extends Activity . 2 public void onCreate(Bundle bundleState) 3 super.onCreate(bundleState); / 在这里使用 5 6 第二、每添加一个新的Activity都必须在应用清单上注册,否则在程序运行时打开新窗口时出错。具体方法:需要在功能清单AndroidManifest.xml文件中添加进上面Activity配置
2、 代码(粗体部分):“.user.OneActivity“"></activity> 在应用主Activity中打开新建的OneActivity:(传递参数可选择) 在一个Activity中可以使用系统提供的startActivity(Intent intent)方法打开新的Activity,在打开新的Activity前,你可以决定是否为新的Activity传递参数:第一种:打开新的Activity,不传递参数view sourceprint?1 public class MainActivity extends Activity . 2 protected voi
3、d onCreate(Bundle savedInstanceState) . 4 button.setOnClickListener(new View.OnClickListener() 5 /点击该按钮会打开一个新的Activity view sourceprint?1 public void onClick(View v) view sourceprint?1 /新建一个显式意图,第一个参数为当前Activity类对象,第二个参数为要打开的Activity类 2 startActivity(new Intent(MainActivity.this, OneActivity.class);
4、 3 4 ); view sourceprint?1 2 第二种:打开新的Activity,并传递若干个参数给它: view sourceprint?01 public class MainActivity extends Activity 02 protected void onCreate(Bundle savedInstanceState) 03 button.setOnClickListener(new View.OnClickListener() 04 /点击该按钮会打开一个新的Activity 05 public void onClick(View v) 06 Intent int
5、ent = new Intent(MainActivity.this, OneActivity.class) 07 Bundle bundle = new Bundle();/该类用作携带数据 08 bundle.putString("name", "xxxx");bundle.putInt("age", 4); 09 intent.putExtras(bundle);/附带上额外的数据startActivity(intent); 10 11 ); 12 13 view sourceprint?1 /在新的Activity中接收前面A
6、ctivity传递过来的参数: 2 public class OneActivity extends Activity 3 protected void onCreate(Bundle savedInstanceState) . 4 Bundle bundle = this.getIntent().getExtras(); 5 String name = bundle.getString("name"); 6 int age = bundle.getInt("age"); 7 . 8 9 前面传递参数时使用到Bundle类和Intent类:他们作用和方法
7、Bundle类用作携带数据,它类似于Map,用于存放key-value名值对形式的值。相对于Map,它提供了各种常用类型的putXxx()/getXxx()方法, 如:putString()/getString()和putInt()/getInt(),putXxx()用于往Bundle对象放入数据,getXxx()方法用于从Bundle对象里获取数据。 Bundle的内部实际上是使用了HashMap<string object>类型的变量来存放putXxx()方法放入的值 view sourceprint?01 public final class Bundle implement
8、s Parcelable, Cloneable . 02 Map<string object> mMap; public Bundle() 03 mMap = new HashMap<string object>(); . 04 05 public void putString(String key, String value) 06 mMap.put(key, value); 07 public String getString(String key) 08 Object o = mMap.get(key); return (String) o; . 09 /类型转换
9、失败后会返回null,这里省略了类型转 换失败后的处理代码 10 11 在调用Bundle对象的getXxx()方法时,方法内部会从该变量中获取数据,然后对数据进行类型转换,转换成什么类型由方法的Xxx决定, getXxx()方法会把转换后的值返回。 Intent类应用"邮递员"通过Intent可以激活Android应用的三大核心组件Activity,Service,BroadcastReceiver. 看看Intent传递参数的方法:第一种, . view sourceprint?1 /打开其他activity,intent意图用于激活组件并可传递数据给新的activit
10、y 2 Intent intent=new Intent(MianActivity.this,OneActivity.class); 3 /要激活的OneActicity 4 intent.putExtra("key1",values); 5 intent.putExtra("key2",values); view sourceprint?1 startActivity(intent); view sourceprint?1 view sourceprint?1 / 在OneActivity中获取传递的数据 . 2 Intent intent=this.
11、getIntent(); 3 /得到激活组件的意图(MainActivity传来的Intent内容,内容相同,但不是 同一个对象在OneActivity中已经执行方法 4 setIntent(Intent newIntent)); 5 String key1=intent.getStringExtra("key1","ss"); 6 /参数二为缺省值,即没有key1的values存在时则把ss赋给变量 7 String key2=intent.getStringExtra("key2","false"); . 第二
12、种:Intent intent = new Intent(); Bundle bundle = new Bundle();/该类用作携带数据bundle.putString("name", "dfddd"); intent.putExtras(bundle);/为意图追加额外的数据,意图原来已经具有的数据不会丢失,但key同名的数据会被替换 在被激活的Activity获取数据方式除使用上面第一种外还可以先获取Bundle对象在获取该对象携带的数据 Intent intent=this.getIntent(); Bundel bundle=intent.g
13、etExtras(); String key1=bundle.getString("key1");. 第一种使用intent.putExtra()携带数据在于 Intent提供了各种常用类型重载后的putExtra()方法,如: putExtra(String name, String value)、 putExtra(String name, long value),在putExtra()方法内部会判断当前Intent对象内部是否已经存在一个Bundle对象,如果不存在就会新建Bundle对象,以后调用 putExtra()方法传入的值都会存放于该Bundle对象,下面是
14、Intent的putExtra(String name, String value)方法代码片断: view sourceprint?1 public class Intent implements Parcelable 2 private Bundle mExtras; 3 public Intent putExtra(String name, String value) 4 if (mExtras = null) mExtras = new Bundle(); 5 6 mExtras.putString(name, value); return this; 7 得到新打开Activity
15、关闭后返回的数据1、在MianActivity中得到新打开Activity 关闭后返回的数据,你需要使用系统提供的startActivityForResult(Intent intent, int requestCode)方法打开新的 Activity,新 Activity 关闭后会向前面的Activity 传回数据,为了得到传回的数据,你必须在前面的Activity中重写 onActivityResult(int requestCode, int resultCode, Intent data)方法: public class MainActivity extends Activity pr
16、otected void onCreate(Bundle savedInstanceState) . button.setOnClickListener(new View.OnClickListener() /点击该按钮会打开一个新的Activity public void onClick(View v) /第二个参数为请求码,可以根据业务需求自己编号 startActivityForResult (new Intent(MainActivity.this, NewActivity.class),1); );/第一个参数为请求Activity,即调用startActivityForResult
17、()传递过去的值(与前面的startActivity(Intent)一样) /第二个参数为请求码,请求码的值是根据业务需要由自已设定,用于标识请求来源。 protected void onActivityResult(int requestCode, int resultCode, Intent data) String result = data.getExtras().getString(“result”); /得到新Activity 关闭后返回的数据 / 当新Activity关闭后,新Activity返回的数据通过 Intent进行传递,android平台会调用前面Activity 的o
18、nActivityResult()方法,把存放了返回数据的Intent作为第三个输入参数传入,在onActivityResult()方法中 使用第三个输入参数可以取出新Activity返回的数据。 2、使用startActivityForResult(Intent intent, int requestCode)方法打开新的Activity,新Activity关闭前需要向前面的Activity返回数据需要使用系统提供的 setResult(int resultCode, Intent data)方法实现:public class NewActivity extends Activity pro
19、tected void onCreate(Bundle savedInstanceState) . button.setOnClickListener(new View.OnClickListener() public void onClick(View v) Intent intent = new Intent();/数据是使用Intent返回 intent.putExtra(“result”, “sssssssssssss”); /把返回数据存入 /设置返回数据 ); setResult()方法的第一个参数值可以根据业务需要自己定义,上面代码中使用到的RESULT_OK是系统Activit
20、y类定义的一个常量,值为-1,代码片断如下: public static final int RESULT_CANCELED = 0;public static final int RESULT_OK = -1;. 请求码与结果码的作用-方便分析传递数据的来源,请求者. 请求码:使用startActivityForResult(Intent intent, int requestCode)方法打开新的Activity,我们需要为startActivityForResult()方法传入 一个请求码(第二个参 数)。请求码的值是根据业务需要由自已设定,用于标识请求来源。 例如:一个Activity
21、有两个按钮,点击这两个按钮都会打开同一个Activity,不管是那个按钮打开新Activity,当这个新Activity关闭后,系统都会调用前面Activity的 onActivityResult(int requestCode, int resultCode, Intent data)方法。在onActivityResult()方法如果需要知道新Activity是由那个按钮打开的,并且要做出相 应的业务处理,这时可以这样做: public void onCreate(Bundle savedInstanceState) . button1.setOnClickListener(new Vie
22、w.OnClickListener() public void onClick(View v) startActivityForResult (new Intent(MainActivity.this, NewActivity.class), 1); ); button2.setOnClickListener(new View.OnClickListener() public void onClick(View v) startActivityForResult (new Intent(MainActivity.this, NewActivity.class), 2); ); protected
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 中国正戊烯行业市场前景预测及投资价值评估分析报告
- 深圳垃圾箱项目可行性研究报告范文
- 招工牛奶小工合同协议书
- 培训学校品牌升级计划方案
- 校园康复创业项目计划书
- 送餐人员合同协议书范本
- 天文学课件下载
- 管理承包合同协议书
- 音乐教育商业策划书3
- 跨境电商运营个人展望与目标-概述说明以及解释
- 2025年MySQL开发模式试题及答案
- 超市代管经营协议书
- 合伙购买无人机设备协议书
- DZ∕T 0211-2020 矿产地质勘查规范 重晶石、毒重石、萤石、硼(正式版)
- 匠心筑梦成就出彩人生-大学生就业指导智慧树知到期末考试答案2024年
- 中控ECS-700学习课件
- 丽声北极星自然拼读绘本第一级Uncle Vic‘s Wagon 课件
- 四年级沪教版语文下册阅读理解专项习题含答案
- 2019幼儿园家委会PPT
- T∕CAAA 002-2018 燕麦 干草质量分级
- 智能照明系统设计说明(共10页)
评论
0/150
提交评论