我正在尝试将一个对象从一个活动发送到另一个活动,因此我正在使用parcelable
,而我创建了代码来发送并接收它,(此代码位于底部)似乎我需要一些代码才能将对象实际写入包裹。
Error While Passing An Object From An Activity To Another (Using Parcelable)
我相信我需要做的是与此中给出的答案类似,所以我需要一个writeToParcel
方法,我在下面的代码中已经完成了。 (虽然在dest.writeValue(this);
是我收到错误的地方)说StackOverFlowError
我相信我可能还需要public static final Parcelable.Creator
...虽然不完全知道如何写它(我试图粗略地写一个并在评论中注明一点)
此外,我不知道我是否需要一点public Clubs (Parcel source)
...
非常感谢任何帮助。感谢
public class Clubs implements Parcelable{
public void setEvent(String eventType, String date) {
this.eventType = eventType;
this.date = date;
}
//contains lots of defined variables and various methods that
//aren't relevant for my question and would take up lots of room
//all like the one above.
//public static final Parcelable.Creator CREATOR
//= new Parcelable.Creator() {
// public Parcel createFromParcel(Parcel in) {
// return (in);
// }
//};
@Override
public int describeContents() {
// TODO Auto-generated method stub
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeValue(this);
}
}
我的onItemClick类将对象放入parcel,并启动新活动
public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) {
Clubs mymeeting = db.get(map.get(position));
Intent i = new Intent();
Bundle b = new Bundle();
b.putParcelable("mymeeting", mymeeting);
i.putExtras(b);
i.setClass(ListSample.this, DynamicEvents.class);
startActivity(i);
}
新活动代码的开始,一旦正确发送对象
,将在稍后编辑public class DynamicEvents extends Activity
{
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
Bundle b = getIntent().getExtras();
// Create the text view
TextView textView = new TextView(this);
textView.setTextSize(20);
textView.setText(" " + b.getParcelable("mymeeting").toString());
// Set the text view as the activity layout
setContentView(textView);
}
}
答案 0 :(得分:0)
答案 1 :(得分:0)
将writeToParcel
方法重写为
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(eventType);
dest.writeString(date);
}
您可能无法直接编写自定义Java对象。您可以单独编写标准数据值,也可以在serializable
对象上创建对象writeSerializable
并使用方法Parcel
。