Intent 是Android 程序中各组件之间进行交互的一种重要方式,它不仅可以指明当前组
件想要执行的动作,还可以在不同组件之间传递数据。Intent 一般可被用于启动活动、启动
服务、以及发送广播等场景
   // A activity调用
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// setContentView(R.layout.activity_main); // 创建视图
setContentView(R.layout.my_layout);
// 找到对应的button来监听事件
findViewById(R.id.butStartAnotherAty).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(MainActivity.this, AnotherAty.class);
i.putExtra("data", "hello word"); // 使用Intent来传参
startActivity(i);
}
});
System.out.println("onCreate");
}
    //B activity 通过Intent来获取值,并显示在textView上面
private TextView tv; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_another_aty); Intent i = getIntent(); //直接获取传过来的intent
tv = (TextView)findViewById(R.id.textView);
tv.setText(i.getStringExtra("data"));
}

// 如果数据比较多,可以通过 Bundle  数据包来传递数据

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// setContentView(R.layout.activity_main); // 创建视图
setContentView(R.layout.my_layout);
// 找到对应的button来监听事件
findViewById(R.id.butStartAnotherAty).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(MainActivity.this, AnotherAty.class);
//i.putExtra("data", "hello word"); // 使用Intent来传参
Bundle b = new Bundle(); // 打包数据
b.putString("name", "chengzhier");
b.putInt("age", 2); i.putExtras(b);
startActivity(i);
}
});
System.out.println("onCreate");
} private TextView tv; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_another_aty); Intent i = getIntent(); //直接获取传过来的intent
tv = (TextView)findViewById(R.id.textView); //i.getStringExtra("data")
Bundle data = i.getExtras();
String s = String.format("name=%s, age=%d", data.getString("name"), data.getInt("age"));
tv.setText(s);
}

// 传递一个对象 java 自带的 Serializable 虚拟化


// User类
public class User implements Serializable{ //让这个对象序列化
private String name;
private int age; public User(int age, String name ) {
this.age = age;
this.name = name;
} public void setAge(int age) {
this.age = age;
} public void setName(String name) {
this.name = name;
} public int getAge() {
return age;
} public String getName() {
return name;
}
} // A activity
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// setContentView(R.layout.activity_main); // 创建视图
setContentView(R.layout.my_layout);
// 找到对应的button来监听事件
findViewById(R.id.butStartAnotherAty).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(MainActivity.this, AnotherAty.class); i.putExtra("user", new User(2, "zh")); startActivity(i);
}
});
System.out.println("onCreate");
} // B activiry
private TextView tv; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_another_aty); Intent i = getIntent(); //直接获取传过来的intent
tv = (TextView)findViewById(R.id.textView);
User u = (User)i.getSerializableExtra("user"); //取出来 String s = String.format("测试11name=%s, age=%d", u.getName(), u.getAge());
tv.setText(s);
}

//传递一个对象 安卓专门的Parcelable虚拟化

/**
* Created by ZhouXiaoHai on 2016/9/8.
User 类
*/
public class User implements Parcelable{ // 安卓自带的序列化
private int age;
private String name;
private String dogName; public void setDogName(String dogName) {
this.dogName = dogName;
} public String getDogName() {
return dogName;
} public User(int age, String name, String dogName) {
this.age = age;
this.name = name;
this.dogName = dogName;
} public void setAge(int age) {
this.age = age;
} public void setName(String name) {
this.name = name;
} public int getAge() {
return age;
} public String getName() {
return name;
} @Override
public int describeContents() {
return 0;
} @Override
public void writeToParcel(Parcel dest, int flags) { // 必须要写的 接口 Parcelable 的方法
// 这个一定要按变量顺序写
dest.writeInt(getAge());
dest.writeString(getName());
dest.writeString(getDogName());
} public static final Creator<User> CREATOR = new Creator<User>() {
@Override
public User createFromParcel(Parcel source) {
// 这个一定要按变量顺序写
return new User( source.readInt(), source.readString(), source.readString());
} @Override
public User[] newArray(int size) {
return new User[size];
}
};
} //A activity
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// setContentView(R.layout.activity_main); // 创建视图
setContentView(R.layout.my_layout);
// 找到对应的button来监听事件
findViewById(R.id.butStartAnotherAty).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(MainActivity.this, AnotherAty.class); i.putExtra("user", new User(2, "zh", "旺财")); startActivity(i);
}
});
System.out.println("onCreate");
} //B activity
private TextView tv; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_another_aty); Intent i = getIntent(); //直接获取传过来的intent
tv = (TextView)findViewById(R.id.textView);
//User u = (User)i.getSerializableExtra("user");
User u = (User)i.getParcelableExtra("user"); String s = String.format("测试21name=%s, age=%d 狗的名字=%s", u.getName(), u.getAge(), u.getDogName());
tv.setText(s);
}

简单总结(小白): Serializable 比 Parcelable 使用起来方便,直接实现接口就好了,但是效率不高。  Parcelable效率高,但是需要自己写一些代码。

Intent传参数的更多相关文章

  1. intent 传参数

    一.传递List<String>和List<Integer>以下以传递List<String>为例,发送List<String>语法为:intent.p ...

  2. android选择图片或拍照图片上传到服务器(包括上传参数)

    From:http://blog.csdn.net/springsky_/article/details/8213898具体上传代码: 1.选择图片和上传界面,包括上传完成和异常的回调监听 [java ...

  3. 传参数应该用哪种形式——值、引用、指针?

    类型:C++ & Qt4,创建时间:十二月 30, 2011, 7:43 p.m. 标题无"转载"即原创文章,版权所有.转载请注明来源:http://hgoldfish.c ...

  4. Mybatis传参数

    1使用@Param注解传参数 mapper接口:public void updateUser(@Param("user")User user)throws Exception; m ...

  5. 如何给main传参数

    main 函数的参数有连个argc argcv[]  argc 是参数个数 argcv是参数的数组指针,且argcv的第一个参数是默认程序路径加程序名 给main传参数,需要在命令行启动程序时设置 如 ...

  6. mvc中多参数URL会很长,首次加载不传参数让url很短,路由规则实现方法[bubuko.com]

    如要实现列表中地址全路径“bubuko-11-2.html”,在首次进入时,使用短路径“bubuko.html”,只有再次href后才显示全路径“bubuko-11-2.html”,下面使用路由规则来 ...

  7. Chrome和Firefox浏览器执行new Date() 函数传参数得到不同结果的陷阱

    某日,同事问到关于new Date() 函数传参数,在火狐浏览器和谷歌浏览器控制台运行,会得到不同的结果,刚开始觉得不可能,后来实际操作才发现此陷阱 var date = new Date('2014 ...

  8. web service上传参数代码实例

    web service上传参数代码实例 这次做的项目用到webservice比较多,最开始在网上看的参考dome,发现都不行,后来发现安卓4.0以后有很大的不同,在做传参时,有些东西需要注意: 第一, ...

  9. spring mvc 传参数

    1.页面:(1)js传参数:location.href="${ctx }/forum/changeCtm.html?ctmId="+id; (2)将内容写在form表单里面,然后用 ...

随机推荐

  1. 解决Qt在openSUSE上编译出现“cannot find -lGL”错误

    在openSUSE上编译QT5.4程序出现“cannot find -lGL”,就连example都无法通过编译.QT是在官网下的最新的安装包. 大体意思是,缺少qt运行时所需要的openGL库.决绝 ...

  2. 结对编程项目——四则运算vs版

    结对编程项目--四则运算vs版 1)小伙伴信息:        学号:130201238 赵莹        博客地址:点我进入 小伙伴的博客 2)实现的功能: 实现带有用户界面的四则运算:将原只能在 ...

  3. jQuery UI常用插件使用

    一.什么是插件 ①是遵循一定接口规范编写的程序 ②是原有系统平台功能的扩展和补充 ③只能运行在规定的系统平台下,而不能单独运行 注:由于jQuery插件是基于jQuery脚本库的扩展,所以所有jQue ...

  4. 入门HTML的回顾,小总结

    1.HTML(是一种超文本标记语言   Hypertext Markup Language),HTML不是一种编程语言,而是一种标记语言,描述网页的语言,HTML是由一套标记标签(markup tag ...

  5. python黑客编程之端口爆破

    #coding:utf-8 from optparse import OptionParser import time,re,sys,threading,Queue import ftplib,soc ...

  6. HTML 学习笔记 CSS3 (2D Matrix)

    Matrix 矩阵 那么什么是矩阵呢? 矩阵可以理解为方阵,只不过 平时方阵里面站着人 矩阵中是数值: CSS3中的矩阵: css3中的矩阵指的是一个方法,书写为matrix() 和 matrix3d ...

  7. zepto阻止事件冒泡

    $("#model_frame").on("click",function(){ $(this).hide(); console.log($(this)); } ...

  8. jquery.validate.min.js 用法方法示例

    页面html 代码 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://w ...

  9. 弹性返回顶部JS代码

    弹性返回顶部JS代码 弹性返回顶部JS代码点击下载

  10. 处理OSX创建的U盘, 删除EFI分区

    1. 运行 diskpart 2. list disk 3. 根据列出的硬盘, select disk [编号] 4. clean 5. exit 然后再创建分区和格式化