zoukankan      html  css  js  c++  java
  • 在Activity之间传递数据—传递值对象

    传递有两种方式,一种是类继承自Serializable(Java方式,速度较慢),另一种是类继承自Parcelable(Android方式)
    继承自Serializable的时候,实现比较简单,类只需书写必须的属性和构造函数。继承自Parcelable的时候,需要实现往目标中写数据等。
    两种差别在实体类的书写和接收时。
    1.      类继承自Serializable
    MainActivity中的OnCreate方法添加代码:
    findViewById(R.id.btnStart).setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Intent i=new Intent(MainActivity.this,OthereActivity.class);
            User user=new User("杨戬",90);
            i.putExtra("user", user);
            startActivity(i);
        }
    });
    OtherActivity中的Oncreate方法添加代码:
       Intent i=getIntent();
            tv=(TextView)findViewById(R.id.txtView);
    
            User u= (User) i.getSerializableExtra("user");
            //    User u= (User) i.getParcelableExtra("user");  接收时的区别
            tv.setText(String.format("姓名1:%s;年龄1:%d",u.getName(),u.getAge()));
    2.      类继承自Parcelable
      User类完整代码:
    package com.example.jike.hhh;
    
    import android.os.Parcel;
    import android.os.Parcelable;
    
    import java.io.Serializable;
    
    /**
     * Created by Administrator on 15-6-14.
     */
    //public class User implements Serializable {
    public class User implements Parcelable {
        private String name;
        private int age;
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public int getAge() {
            return age;
        }
    
        public void setAge(int age) {
            this.age = age;
        }
    
        public User(String name, int age)
        {
            this.name=name;
            this.age=age;
        }
    
        @Override
        public int describeContents() {
            return 0;
        }
    
        @Override
        public void writeToParcel(Parcel parcel, int i) {
                //向目标中写数据
            parcel.writeString(getName());
            parcel.writeInt(getAge());
        }
    
        public static final Creator<User> CREATOR=new Creator<User>() {
            @Override
            public User createFromParcel(Parcel parcel) {
                return new User(parcel.readString(),parcel.readInt());
            }
    
            @Override
            public User[] newArray(int i) {
                return new User[i];//返回i
            }
        };
    }
    View Code
  • 相关阅读:
    INFORMATION_SCHEMA.INNODB_LOCKS
    INFORMATION_SCHEMA.INNODB_TRX 详解
    用 Flask 来写个轻博客 (9) — M(V)C_Jinja 语法基础快速概览
    自助式BI对比评测:Tableau和FineBI
    4款最具影响力的自助式BI工具
    4款最具影响力的自助式BI工具
    用 Flask 来写个轻博客 (8) — (M)VC_Alembic 管理数据库结构的升级和降级
    用 Flask 来写个轻博客 (7) — (M)VC_models 的关系(many to many)
    zabbix 通过key 获取
    匿名hash
  • 原文地址:https://www.cnblogs.com/hometown/p/4575326.html
Copyright © 2011-2022 走看看