Intentで画面遷移する際、オブジェクトを受け渡したい場合どうするのか? Intent.putExtra() の引数型は「String」「double」「int」「float」「long」「byte」「CharSequence」「char」「Bundle」「Parcelable」「Serializable」「boolean」「short」 となってるので、それ以外のオブジェクトやカスタムクラスを、そのまま受け渡しできないようです。
カスタムオブジェクトを受け渡す場合、事前に Serializable を implements しておく。 [java] import java.io.Serializable; import java.util.Date;
public class Schedule implements Serializable { private static final long serialVersionUID = -7168471472978288786L;
private Date dtstart;
private String title;
public Date getDtstart() {
return dtstart;
}
public void setDtstart(Date value) {
dtstart = value;
}
public String getTitle() {
return title;
}
public void setTitle(String value) {
title = value;
}
} [/java]
[java]
private void pageDetail(Schedule schedule) {
Intent intent = new Intent(CalendarActivity.this, ScheduleDetailActivity.class);
intent.putExtra("schedule", schedule);
startActivityForResult(intent, 1);
}
[/java]
[java] public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.schedule_detail);
Intent intent = getIntent();
Schedule schedule = (Schedule) intent.getSerializableExtra("schedule");
}
[/java]
2011/06/08追記 こちらの方が正しいかも。 [java] public void onActivityResult(int requestCode, int resultCode,Intent data) { if( resultCode == RESULT_OK) { Schedule schedule = (Schedule) data.getSerializableExtra("schedule"); } } [/java]