Android Serializable与Parcelable 用法


Serializable:

package com.example.keen.intentextra;

import java.io.Serializable;

/**
 * Created by Keen on 12/13/2015.
 */
public class Person implements Serializable{
    private String name;
    private int age;

    public String getName(){
        return name;
    }

    public int getAge(){
        return age;
    }
    public void setAge(int age){
        this.age = age;
    }

    public void setName(String name){
        this.name = name;
    }

}

Parcelable:

package com.example.keen.intentextra;

import android.os.Parcel;
import android.os.Parcelable;

/**
 * Created by Keen on 12/13/2015.
 */
public class Book implements Parcelable {
    private String bookName;
    private String author;
    private int publishDate;
    public  Book(){

    }

    public String getBookName(){
        return bookName;
    }
    public void setBookName(String bookName){
        this.bookName = bookName;
    }

    public String getAuthor(){
        return author;
    }

    public void setAuthor(String author){
        this.author = author;
    }

    public int getPublishDate(){
        return publishDate;
    }
    public void setPublishDate(int publishDate){
        this.publishDate = publishDate;
    }

    @Override
    public int describeContents(){
        return 0;
    }

    @Override
    public void writeToParcel(Parcel dest, int flags) {
        dest.writeString(bookName);
        dest.writeString(author);
        dest.writeInt(publishDate);
    }

    public static final Parcelable.Creator<Book> CREATOR = new Creator<Book>() {
        @Override
        public Book createFromParcel(Parcel source) {
            return new Book(source);
        }

        @Override
        public Book[] newArray(int size) {
            return new Book[size];
        }
    };

    public Book(Parcel in){
        bookName = in.readString();
        author = in.readString();
        publishDate = in.readInt();
    }
}

MianActivity:

package com.example.keen.intentextra;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class IntentExtraMainActivity extends AppCompatActivity {

    private Button intentButton;
    private Button parcelButton;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_intent_extra_main);

        intentButton = (Button)findViewById(R.id.bt_intent);
        intentButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Person person = new Person();
                person.setName("Tom");
                person.setAge(20);
                Intent intent = new Intent(IntentExtraMainActivity.this, SecondActivity.class);
                intent.putExtra("person_data", person);
                startActivity(intent);
            }
        });


        parcelButton = (Button)findViewById(R.id.bt_parcel);
        parcelButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Book book = new Book();
                book.setBookName("test");
                book.setAuthor("haha");
                book.setPublishDate(100);
                Intent intent = new Intent(IntentExtraMainActivity.this, SecondActivity.class);
                intent.putExtra("book_data", book);
                startActivity(intent);
            }
        });

    }
}

SecondActivity:

package com.example.keen.intentextra;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.TextView;

public class SecondActivity extends AppCompatActivity {

    private TextView textName;
    private TextView textAge;

    private TextView textBookName;
    private TextView textBookAuthor;
    private TextView textPublishDate;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second);

        textAge = (TextView)findViewById(R.id.text_age);
        textName = (TextView)findViewById(R.id.text_name);

        textBookName = (TextView)findViewById(R.id.text_bookname);
        textBookAuthor = (TextView)findViewById(R.id.text_bookauthor);
        textPublishDate = (TextView)findViewById(R.id.text_bookpublishdate);

//        Person person = (Person)getIntent().getSerializableExtra("person_data");
//
//        textName.setText(person.getName());
//        textAge.setText(Integer.toString(person.getAge()));

        Book book = (Book)getIntent().getParcelableExtra("book_data");
        textBookName.setText(book.getBookName());
        textBookAuthor.setText(book.getAuthor());
        textPublishDate.setText(Integer.toString(book.getPublishDate()));
    }
}


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值