我正在尝试我的第一个Parcelable传输,它不是很好。这是我的Parcelable类:
public class Element implements Parcelable, Serializable {
private static final long serialVersionUID = 1L;
String name;
String id;
byte[] password;
public static final Parcelable.Creator<Element> CREATOR = new Parcelable.Creator<Element>() {
public Element createFromParcel(Parcel source) {
return new Element(source);
}
public Element[] newArray(int size) {
return new Element[size];
}
};
private Element(Parcel in){
name = in.readString();
id = in.readString();
password = new byte[in.readInt()];
in.readByteArray(password);
}
public Element(String name,String id,byte[] password){
this.name=name;
this.id=id;
this.password=password;
}
@Override
public String toString() {
return name;
}
public int describeContents() {
return 0;
}
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(name);
dest.writeString(id);
dest.writeInt(password.length);
dest.writeByteArray(password);
}
}
如您所见,它是一个简单的Parcelable,包含2个String字段和1个byteArray。
现在,我通过我的主要活动将其发送到第二个活动:
//Inside the main activity
Intent i = new Intent(MainActivity.this, DisplayActivity.class);
i.putExtra("element", (Parcelable)adapter.getItem(pos));
startActivity(i);
然后,我在第二个活动中接收到Parcelable:
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.display);
Element e = getIntent().getExtras().getParcelable("element");
//this line makes my app crash. No idea why.
发布于 2013-12-01 21:36:10
这样试试:
Element obj = new Element();
//set your data here before send
Intent i = new Intent(this, MyActivity.class);
i.putExtra("com.package.Element", obj);
startActivity(i);
然后检索它:
public class MyActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Bundle b = getIntent().getExtras();
Element obj = b.getParcelable("com.package.Element");
}
}
发布于 2014-01-11 01:12:49
我也在为同样的问题而挣扎。在MyActivity活动的清单中添加:
android:launchMode="singleTop"
它为我解决了这个问题。
<activity android:name="com.example.myapp.MyActivity"
android:label="@string/title_myactivity"
android:launchMode="singleTop">
</activity>
发布于 2015-07-01 19:07:18
为什么要同时实现Parcelable和Serializable?
https://stackoverflow.com/questions/20312611
复制相似问题