Android菜鸟的成长笔记(10)——使用Bundle在Activity之间传值
来源:互联网 发布:mac搜不到wifi 编辑:程序博客网 时间:2024/05/17 04:26
前面我们了解了如何启动一个Activity,一个Activity在启动另外一个Activity的时候可能会遇到需要传值的需要。Activity之间传值是通过Bundle来实现的。
一、通过Bundle传值介绍
二、通过Bundle传值例子Intent提供了多个重载方法来携带数据
putExtras(Bundle data):向Intent中放入需要的数据包
Bundle getExtras():取出Intent所携带的数据
putExtras(String name, Xxx value):向Intent中按照key-value形式传值
getXxxExtra(String name):从Intent中按key取值
从上面方法中可以看到Bundle就像一个数据包一样,Bundle中存取数据的方法如下:
pubXxx(String key, Xxx data):向Bundle中放入数据
pubSerializable(String key, Serializable data):向Bundle中放入一个可序列化的对象。
getXxx(Strign key):从Bundle中取出数据
getSerializable(String key, Serializable data):从Bundle中取出一个可序列化的对象。
Bundle对象是由系统需要时自动创建的,我们不需要管。
三、通过Bundle返回结果MainActivity.java中的核心代码
Intent intent = new Intent();intent.setAction("com.example.intent.action.TEST_ACTION");intent.putExtra("test1", 1);Bundle bundle = new Bundle();bundle.putBoolean("test2", false);bundle.putSerializable("test3", new Person("大碗干拌", 2));intent.putExtras(bundle);startActivity(intent);Person.java类package com.example.testintent;import java.io.Serializable;public class Person implements Serializable{private String name;private int age;public Person(String name, int age) {super();this.name = name;this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}@Overridepublic String toString() {// TODO Auto-generated method stubreturn "姓名:" + name +", " + "年龄:" + age;}}SecondActivity.javapublic class SecondActivity extends Activity{@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);Intent intent = getIntent();Bundle bundle = intent.getExtras();System.out.println(bundle.getInt("test1"));System.out.println(bundle.getBoolean("test2"));System.out.println(intent.getSerializableExtra("test3"));}}运行结果
四、通过Bundle返回处理结果例子前面已经提到过了,Activity还提供了一个startActivityForResult(Intent intent, int requestCode)方法来启动其他Activity。这样就需要如下两个条件:
1、当前Activity需要重写onActivityResult(int requestCode, int resultCode, Intent intent)方法来获取返回的数据。
2、被启动的Activty需要调用setResult方法设置处理结果。
将上面的代码中startActivity改成startActivityForResult
Bundle bundle = new Bundle();bundle.putBoolean("test2", false);bundle.putSerializable("test3", new Person("大碗干拌", 2));intent.putExtras(bundle);startActivityForResult(intent, 0);SecondActivity.javapackage com.example.testintent;import android.app.Activity;import android.content.Intent;import android.os.Bundle;public class SecondActivity extends Activity{@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);Intent intent = getIntent();Bundle bundle = intent.getExtras();System.out.println(bundle.getInt("test1"));System.out.println(bundle.getBoolean("test2"));System.out.println(intent.getSerializableExtra("test3"));intent.putExtra("test4", "返回值");setResult(0, intent);finish();}}在MainActivity中重写onActivityResult方法@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent intent) {if(requestCode == 0 && resultCode == 0){Bundle data = intent.getExtras();System.out.println(data.getString("test4"));}}执行结果
- Android菜鸟的成长笔记(10)——使用Bundle在Activity之间传值
- Android菜鸟的成长笔记(10)——使用Bundle在Activity之间传值
- 安卓类——使用Bundle在Activity之间传值
- Android Studio——使用Bundle在Activity之间传值
- Android菜鸟的成长笔记——初识Activity
- Android菜鸟的成长笔记(7)——什么是Activity
- Android菜鸟的成长笔记(7)——什么是Activity
- Android菜鸟的成长笔记——Eclipse使用小结
- Android菜鸟的成长笔记——PopupMenu使用
- Android学习进阶02——使用Bundle在Activity之间交换数据
- 在Activity之间传值,遍历Bundle
- 关于Bundle及其在不同activity之间的传值
- Android菜鸟的成长笔记——第一个Activity 和 ADB
- 在Activity之间使用Intent传值和Bundle传值的区别和方式
- Android菜鸟的成长笔记(20)——IntentService
- Android菜鸟的成长笔记(20)——IntentService
- Android菜鸟的成长笔记(27)——SurfaceView的使用
- Android菜鸟的成长笔记(27)——ViewPager的使用
- 使用InvalidateRect(rect) 防止图片移动时发生闪烁
- keystone源代码分析
- 活锁 死锁 饥饿
- 汉诺塔-递归
- HDFS采用主从(Master/Slave)结构模型
- Android菜鸟的成长笔记(10)——使用Bundle在Activity之间传值
- C#实现黑客帝国字幕特效
- stl排序之sort函数
- 远程桌面按键失效变成快捷键
- 黑马程序员—15—java基础:有关泛型的学习笔记和学习心得体会
- 通过栈浅析递归调用
- 黑客利用微软公司IE10浏览器的一个未知漏洞发起了新的攻击
- Java学习之提高!初步接触eclipse和知识复苏(因为有不少是前面提到的)
- Week3 Assignment - Princeton-Algorithms-PartI