zoukankan      html  css  js  c++  java
  • Android通过Intent传递对象

    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();
  • 相关阅读:
    C++ class内的 ++ 重载,左++,右++,重载示例。
    C++ class外的 << 重载,输出流,重载示例。不应该定义类内的<<重载
    C++ class内的 < 和 > 重载,大于号,小于号,重载示例。
    C++ class外的==重载,判断相等,测试等于,重载示例。二元操作符
    C++ class内的==重载,判断相等,测试等于,重载示例。二元操作符
    C++ 回调函数 Callback 机制例程
    C++ trais技术 模板特化的应用
    C++ class 中的 const 成员函数
    linux 安装 Samba服务
    添加/删除FTP用户并设置权限
  • 原文地址:https://www.cnblogs.com/guop/p/4992383.html
Copyright © 2011-2022 走看看