Android Serializable与Parcelable 用法
2015-12-13 16:31
405 查看
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()));
}
}
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()));
}
}
相关文章推荐
- android混淆打包、反编译、重新打包签名
- gridlayout 子view撑出屏幕
- 在Android studio环境下使用EventBus
- 46.Android 自定义Dialog
- android touch事件 续(一)
- Android AsyncTask经典问题解析
- Android 动画框架详解,第 1 部分
- android-Styles and Themes
- Android 自定义卫星式弧形菜单
- 面向对象六大原则(六):迪米特原则
- android-Supporting Different Screens in Web Apps
- 倍数提高工作效率的 Android Studio 奇技
- Android View的onTouchEvent和OnTouch区别
- Android studio 查看apidemos指南
- Android登陆界面实现清除输入框内容和震动效果
- onTouch与onTouchEvent的有什么区别
- android View的事件分发机制
- 安卓开发中ToggleButton按钮的使用
- onStart和onResume的区别
- 深入学习Android中的Intent