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
  • 相关阅读:
    搭建环境遇到的几个问题
    webservice
    Eclipse 反编译 阅读class 文件
    设置navigationBar上面的item
    自定义的UITabbar上面的按钮的x坐标的计算方法
    UIToolbar自定义背景及按钮设置
    UITabBar实现自定义背景及UITabBarItem自定义图片和字体
    IOS APP圆形图片的实现
    如果AlertView输入框为空,则禁止点击确定按钮
    两种局部刷新UITableView的方法的使用条件
  • 原文地址:https://www.cnblogs.com/hometown/p/4575326.html
Copyright © 2011-2022 走看看