• 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();
  • 相关阅读:
    新随笔(二)用户体验:用户注册表单中的“年份”设计乱象
    新随笔(一) 从用户心理体验谈慎用瀑布流设计
    产品经理,你来自江湖
    对你同样重要的非技术贴,8个方法让你成为下一个晋升对象
    非技术贴,10件事证明你跟错了人
    Android开发工程师,前行路上的14项技能
    SVN报错:Error Updating changes:svn:E155037的解决方案同样适用于svn clean up失败解决方案
    方法命名问题
    controller 获取data: JSON.stringify(param)
    毕业设计----maven使用ueditor编辑器
  • 原文地址:https://www.cnblogs.com/guop/p/4992383.html
Copyright © 2020-2023  润新知