1、传递Serializable方式类对象

首先创建一个序列化类:User

import java.io.Serializable;

public class User implements Serializable {
  private int ID;
private String UserName;
private String PWD;
public final void setID(int value)
{
ID = value;
}
public final int getID()
{
return ID;
}
public final void setUserName(String value)
{
UserName = value;
}
public final String getUserName()
{
return UserName;
}
public final void setPWD(String value)
{
PWD = value;
} public final String getPWD()
{
return PWD;
} }

登录窗体登录后传递内容

Intent intent = new Intent();
intent.setClass(Login.this, MainActivity.class);
Bundle bundle = new Bundle();
bundle.putSerializable("user", user);
intent.putExtras(bundle);
this.startActivity(intent);

接收端

Intent intent = this.getIntent();
user=(User)intent.getSerializableExtra("user");

以上就可以实现对象的传递。

补充:

如果传递的是List<Object>,可以把list强转成Serializable类型,而且object类型也必须实现了Serializable接口

Intent.putExtras(key, (Serializable)list)  

接收

(List<YourObject>)getIntent().getSerializable(key)

2、传递数据值

(1)用于Activity之间的数据传递

在起始Activity中,发送数据:

Intent intent = new Intent();
//设置起始Activity和目标Activity,表示数据从这个Activity传到下个Activity
intent.setClass(ThisActivity.this,TargetActivity.class);
//绑定数据
intent.putExtra("username",username);//也可以绑定数组
intent.putExtra("userpass",userpass);
//打开目标Activity
startActivity(intent);

在目标Activity中,接收数据:

//获得意图
Intent intent = getIntent();
//读取数据
String name = intent.getStringExtra("username");
String pass = intent.getStringExtra("userpass);

(2)也适用Bundle(捆)

在起始Activity中,发送数据:

Intent intent = new Intent();
//设置起始Activity和目标Activity,表示数据从这个Activity传到下个Activity
intent.setClass(ThisActivity.this,TargetActivity.class);
//一次绑定多个数据
Bundle bundle = new Bundle();
bundle.putString("username",username);
bundle.putString("userpass",userpass);
intent.putExtras(bundle);
//打开目标Activity
startActivity(intent);

在目标Activity中,接收数据:

//获得意图
Intent intent = getIntent();
//读取数据
Bundle bundle = intent.getExtras();
String name = bundle.getString("username");
String pass = bundle.getString("userpass");

3、当需要从目标Activity回传数据到原Activity时,可以使用上述方法定义一个新的Intent来传递数据,也可以使用startActivityForResult(Intent intent, int requestCode)方法。

在起始Activity中,发送数据:

Intent intent = new Intent();
//设置起始Activity和目标Activity,表示数据从这个Activity传到下个Activity
intent.setClass(ThisActivity.this,TargetActivity.class);
//绑定数据
intent.putExtra("username",username);//也可以绑定数组
intent.putExtra("userpass",userpass);
//打开目标Activity
startActivityForResult(intent,1);
//需要重写onActivityResult方法
protected void onActivityResult(int requestCode, int resultCode, Intent intent)
{
super.onActivityResult(requestCode,resultCode,intent);
//判断结果码是否与回传的结果码相同
if(resultCode == 1)
      {
    //获取回传数据
  String name = intent.getStringExtra("name");
  String pass = intent.getStringExtra("pass);
   //对数据进行操作
......
    }
}

在目标Activity中,接收数据:

//获得意图
Intent intent = getIntent();
//读取数据
String name = intent.getStringExtra("username");
String pass = intent.getStringExtra("userpass);
//从EditText中获取新的数据给name和pass
name = editText1.getText().toString();
pass = editText2.getText().toString()
//数据发生改变,需要把改变后的值传递回原来的Activity
intent.putExtra("name",name);
intent.putExtra("pass",pass);
//setResult(int resultCode,Intent intent)方法
setResult(1,intent);
//销毁此Activity,摧毁此Activity后将自动回到上一个Activity
finish();

Android通过Intent传递对象的更多相关文章

  1. android#使用Intent传递对象

    参考自<第一行代码>——郭霖 Intent的用法相信你已经比较熟悉了,我们可以借助它来启动活动.发送广播.启动服务等.在进行上述操作的时候,我们还可以在Intent中添加一些附加数据,以达 ...

  2. Android中Intent传递对象的两种方法(Serializable,Parcelable)

    今天要给大家讲一下Android中 Intent中如何传递对象,就我目前所知道的有两种方法,一种是Bundle.putSerializable(Key,Object);另一种是 Bundle.putP ...

  3. [转]Android中Intent传递对象的两种方法(Serializable,Parcelable)

    http://blog.csdn.net/xyz_lmn/article/details/5908355 今天要给大家讲一下Android中Intent中如何传递对象,就我目前所知道的有两种方法,一种 ...

  4. Android高手进阶教程(十七)之---Android中Intent传递对象的两种方法(Serializable,Parcelable)!

    [转][原文] 大家好,好久不见,今天要给大家讲一下Android中Intent中如何传递对象,就我目前所知道的有两种方法,一种是Bundle.putSerializable(Key,Object); ...

  5. 【转】Android中intent传递对象和Bundle的用法

    原文网址:http://blog.csdn.net/lixiang0522/article/details/8642202 android中的组件间传递的对象一般实现Parcelable接口,当然也可 ...

  6. Intent传递对象的几种方式

    原创文章.转载请注明 http://blog.csdn.net/leejizhou/article/details/51105060 李济洲的博客 Intent的使用方法相信你已经比較熟悉了,Inte ...

  7. Android 通过 Intent 传递类对象或list对象

    (转:http://www.cnblogs.com/shaocm/archive/2013/01/08/2851248.html) Android中Intent传递类对象提供了两种方式一种是 通过实现 ...

  8. Android 全局获取 Context 与使用 Intent 传递对象

    =====================全局获取 Context======================== Android 开发中很多地方需要用到 Context,比如弹出 Toast.启动活 ...

  9. Android 通过 Intent 传递类对象

    Android中Intent传递类对象提供了两种方式一种是 通过实现Serializable接口传递对象,一种是通过实现Parcelable接口传递对象. 要求被传递的对象必须实现上述2种接口中的一种 ...

随机推荐

  1. POJ 1082

    #include <iostream> using namespace std; int main() { //freopen("acm.acm","r&qu ...

  2. (转)解锁MySQL备份恢复的4种正确姿势

    本文根据DBAplus社群第104期线上分享整理而成. 原文:http://dbaplus.cn/news-11-1267-1.html 讲师介绍   冯帅 点融网高级DBA 获有Oracle OCM ...

  3. 如何删除Eclipse里某个工作空间?

    很多时候,一个Eclipse中或多或少的都会有那么几个工作空间(workspace),但是久而久之你会发现有些工作空间你觉得不再需要了或者觉得碍眼,怎么办? 其实很简单,方法有两种. 1.打开你的Ec ...

  4. Tomcat配置https、访问http自动跳转至https

    1.配置Tomcat,打开$CATALINA_HOME/conf/server.xml,修改如下 <Connector port="8080" protocol=" ...

  5. CentOS7安装SaltStack的踩坑经历

    虚拟机镜像:centOS7 minion 版本 软件版本: salt-master-2017.7.2-1.el7.noarchsalt-minion-2017.7.2-1.el7.noarchsalt ...

  6. struct in_addr 结构体

    struct in_addr 结构体: struct in_addr { in_addr_t s_addr; }; 表示一个32位的IPv4地址. in_addr_t一般为32位的unsigned i ...

  7. Linux 目录流管理

    目录 1. 打开/关闭文件 1). 打开目录 / opendir 2). 关闭文件 / fclose 2. 读/写目录流 1). 目录流-读 / readdir & readdir_r 3. ...

  8. Vue双向绑定的关键:Object.defineProperty()

    这个方法了不起啊.vue.js和avalon.js 都是通过它实现双向绑定的.而且Object.observe也被草案发起人撤回了.所以defineProperty更有必要了解一下了. 先上几行代码看 ...

  9. [转]React 教程

    本文转自:http://www.runoob.com/react/react-install.html React 可以直接下载使用,下载包中也提供了很多学习的实例. 本教程使用了 React 的版本 ...

  10. [转]Using TRY...CATCH in Transact-SQL

    本文转自:https://technet.microsoft.com/en-us/library/ms179296(v=sql.105).aspx Using TRY...CATCH in Trans ...