Intent传参数
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传参数的更多相关文章
- intent 传参数
一.传递List<String>和List<Integer>以下以传递List<String>为例,发送List<String>语法为:intent.p ...
- android选择图片或拍照图片上传到服务器(包括上传参数)
From:http://blog.csdn.net/springsky_/article/details/8213898具体上传代码: 1.选择图片和上传界面,包括上传完成和异常的回调监听 [java ...
- 传参数应该用哪种形式——值、引用、指针?
类型:C++ & Qt4,创建时间:十二月 30, 2011, 7:43 p.m. 标题无"转载"即原创文章,版权所有.转载请注明来源:http://hgoldfish.c ...
- Mybatis传参数
1使用@Param注解传参数 mapper接口:public void updateUser(@Param("user")User user)throws Exception; m ...
- 如何给main传参数
main 函数的参数有连个argc argcv[] argc 是参数个数 argcv是参数的数组指针,且argcv的第一个参数是默认程序路径加程序名 给main传参数,需要在命令行启动程序时设置 如 ...
- mvc中多参数URL会很长,首次加载不传参数让url很短,路由规则实现方法[bubuko.com]
如要实现列表中地址全路径“bubuko-11-2.html”,在首次进入时,使用短路径“bubuko.html”,只有再次href后才显示全路径“bubuko-11-2.html”,下面使用路由规则来 ...
- Chrome和Firefox浏览器执行new Date() 函数传参数得到不同结果的陷阱
某日,同事问到关于new Date() 函数传参数,在火狐浏览器和谷歌浏览器控制台运行,会得到不同的结果,刚开始觉得不可能,后来实际操作才发现此陷阱 var date = new Date('2014 ...
- web service上传参数代码实例
web service上传参数代码实例 这次做的项目用到webservice比较多,最开始在网上看的参考dome,发现都不行,后来发现安卓4.0以后有很大的不同,在做传参时,有些东西需要注意: 第一, ...
- spring mvc 传参数
1.页面:(1)js传参数:location.href="${ctx }/forum/changeCtm.html?ctmId="+id; (2)将内容写在form表单里面,然后用 ...
随机推荐
- Codeforces Round #285 (Div.1 B & Div.2 D) Misha and Permutations Summation --二分+树状数组
题意:给出两个排列,求出每个排列在全排列的排行,相加,模上n!(全排列个数)得出一个数k,求出排行为k的排列. 解法:首先要得出定位方法,即知道某个排列是第几个排列.比如 (0, 1, 2), (0, ...
- Codeforces Round #282 Div.1 B Obsessive String --DP
题意: 给两个串S,T,问能找出多少的S的(a1,b1)(a2,b2)..(ak,bk),使Sa1---Sb1,...Sak---Sbk都包含子串T,其中k>=1,且(a1,b1)...(ak, ...
- 使用百度UMeditor富文本编辑器,修改自定义图片上传,修改源码
富文本编辑器,不多说了,这个大家应该都用到过,至于用到的什么版本,那就分很多种 CKEditor:很早以前叫FCK,那个时候也用过,现在改名了,比较流行的一个插件,国外很多公司在用 UEDITOR:百 ...
- MYSQL数据库的操作
Mysql的连接方式: 1.原生函数:mysql_connect($server,$username,$password); //打开一个到Mysql服务器的连接 mysql_select_db( ...
- poj2632 Crashing Robots
Crashing Robots Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 9859 Accepted: 4209 D ...
- java.sql.preparedstatement和java.sql.statement的区别
本文转自CSDN,然后整理了一遍.原文出处:CSDN JDBC(java database connectivity,java数据库连接)的api中的主要的四个类之一的java.sql.stateme ...
- 如何迁移Alwayson AG
Windows cluster要求同一个cluster中的所有windows版本都是相同的,这样就出现一个问题,当我们要将对windows进行升级时,(例如从windows 2008 R2升级到win ...
- Linux 信号详解一(signal函数)
信号列表 SIGABRT 进程停止运行 SIGALRM 警告钟 SIGFPE 算述运算例外 SIGHUP 系统挂断 SIGILL 非法指令 SIGINT 终端中断 SIGKILL 停止进程(此信号不能 ...
- SQL Server读懂语句运行的统计信息 SET STATISTICS TIME IO PROFILE ON
对于语句的运行,除了执行计划本身,还有一些其他因素要考虑,例如语句的编译时间.执行时间.做了多少次磁盘读等. 如果DBA能够把问题语句单独测试运行,可以在运行前打开下面这三个开关,收集语句运行的统计信 ...
- Hadoop: MapReduce2多个job串行处理
复杂的MapReduce处理中,往往需要将复杂的处理过程,分解成多个简单的Job来执行,第1个Job的输出做为第2个Job的输入,相互之间有一定依赖关系.以上一篇中的求平均数为例,可以分解成三个步骤: ...