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. Codeforces Round #285 (Div.1 B & Div.2 D) Misha and Permutations Summation --二分+树状数组

    题意:给出两个排列,求出每个排列在全排列的排行,相加,模上n!(全排列个数)得出一个数k,求出排行为k的排列. 解法:首先要得出定位方法,即知道某个排列是第几个排列.比如 (0, 1, 2), (0, ...

  2. 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, ...

  3. 使用百度UMeditor富文本编辑器,修改自定义图片上传,修改源码

    富文本编辑器,不多说了,这个大家应该都用到过,至于用到的什么版本,那就分很多种 CKEditor:很早以前叫FCK,那个时候也用过,现在改名了,比较流行的一个插件,国外很多公司在用 UEDITOR:百 ...

  4. MYSQL数据库的操作

    Mysql的连接方式: 1.原生函数:mysql_connect($server,$username,$password);   //打开一个到Mysql服务器的连接 mysql_select_db( ...

  5. poj2632 Crashing Robots

    Crashing Robots Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 9859   Accepted: 4209 D ...

  6. java.sql.preparedstatement和java.sql.statement的区别

    本文转自CSDN,然后整理了一遍.原文出处:CSDN JDBC(java database connectivity,java数据库连接)的api中的主要的四个类之一的java.sql.stateme ...

  7. 如何迁移Alwayson AG

    Windows cluster要求同一个cluster中的所有windows版本都是相同的,这样就出现一个问题,当我们要将对windows进行升级时,(例如从windows 2008 R2升级到win ...

  8. Linux 信号详解一(signal函数)

    信号列表 SIGABRT 进程停止运行 SIGALRM 警告钟 SIGFPE 算述运算例外 SIGHUP 系统挂断 SIGILL 非法指令 SIGINT 终端中断 SIGKILL 停止进程(此信号不能 ...

  9. SQL Server读懂语句运行的统计信息 SET STATISTICS TIME IO PROFILE ON

    对于语句的运行,除了执行计划本身,还有一些其他因素要考虑,例如语句的编译时间.执行时间.做了多少次磁盘读等. 如果DBA能够把问题语句单独测试运行,可以在运行前打开下面这三个开关,收集语句运行的统计信 ...

  10. Hadoop: MapReduce2多个job串行处理

    复杂的MapReduce处理中,往往需要将复杂的处理过程,分解成多个简单的Job来执行,第1个Job的输出做为第2个Job的输入,相互之间有一定依赖关系.以上一篇中的求平均数为例,可以分解成三个步骤: ...