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
  • 相关阅读:
    LOJ 6192 城市网络(树上倍增)
    SDOI2010代码拍卖会 (计数类DP)
    失控的未来交通工具 (LOJ 508,带权并查集,数论)
    线段树维护区间前k小
    POJ 1966 Cable TV Network (最大流最小割)
    网络流学习笔记
    最大子矩阵和
    POJ 1723 Soldiers (中位数)
    最大子矩阵求法详解
    CH0805 防线 (二分值域,前缀和,特殊性质)
  • 原文地址:https://www.cnblogs.com/hometown/p/4575326.html
Copyright © 2011-2022 走看看