默认情况下implements Serializable是不会自动生成UID的,我们可以在设置中开启提示:
然后可以看到提示:
然后光标放在类名上,快捷键Alt + Enter选中生成serialVersionUID:
Done:
Android Studio Parcelable代码生成插件
帮我们生成Parcelable代码
Settings>Plugins安装插件后重启AS,快捷键Alt + Ins选择Parcelable:
例子
BookSerializable.java
package com.zhoumushui.frogweather.bean;
import java.io.Serializable;
public class BookSerializable implements Serializable{
private static final long serialVersionUID = -8361940723643607913L;
private String name;
private float prize;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public float getPrize() {
return prize;
}
public void setPrize(float prize) {
this.prize = prize;
}
public BookSerializable(String name, float prize) {
this.name = name;
this.prize = prize;
}
}
BookParcelable.java
package com.zhoumushui.frogweather.bean;
import android.os.Parcel;
import android.os.Parcelable;
public class BookParcelable implements Parcelable{
private String name;
private float prize;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public float getPrize() {
return prize;
}
public void setPrize(float prize) {
this.prize = prize;
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(this.name);
dest.writeFloat(this.prize);
}
public BookParcelable() {
}
public BookParcelable(String name, float prize) {
this.name = name;
this.prize = prize;
}
protected BookParcelable(Parcel in) {
this.name = in.readString();
this.prize = in.readFloat();
}
public static final Creator CREATOR = new Creator() {
@Override
public BookParcelable createFromParcel(Parcel source) {
return new BookParcelable(source);
}
@Override
public BookParcelable[] newArray(int size) {
return new BookParcelable[size];
}
};
}
序列化,传递数据
Intent intentSerializableParcelable = new Intent(MainActivity.this,
SerializableParcelableActivity.class);
Bundle bundle = new Bundle();
// Serializable
BookSerializable bookSerializable = new BookSerializable(“Serializable Book”, 9);
bundle.putSerializable(“bundle_serializable”, bookSerializable);
// Parcelable
BookParcelable bookParcelable = new BookParcelable(“Parcelable Book”, 5);
bundle.putParcelable(“bundle_parcelable”,bookParcelable);
intentSerializableParcelable.putExtras(bundle);
startActivity(intentSerializableParcelable);
接收数据,反序列化
Intent intent = getIntent();
Bundle bundle = intent.getExtras();
BookSerializable bookSerializable = (BookSerializable) bundle.getSerializable(“bundle_serializable”);
textResultSerializable.setText(“Serializable.NAME=” + bookSerializable.getName()
- “,PRIZE=” + bookSerializable.getPrize());
BookParcelable bookParcelable = bundle.getParcelable(“bundle_parcelable”);
textResultParcelable.setText(“Parcelable.NAME=” + bookParcelable.getName()
- “,PRIZE=” + bookParcelable.getPrize());