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();
  • 相关阅读:
    remove white space from read
    optimize the access speed of django website
    dowload image from requests
    run jupyter from command
    crawl wechat page
    python version 2.7 required which was not found in the registry windows 7
    health
    alternate rows shading using conditional formatting
    word
    【JAVA基础】static 关键字
  • 原文地址:https://www.cnblogs.com/guop/p/4992383.html
Copyright © 2011-2022 走看看