从意图返回额外内容

时间:2017-08-07 04:42:59

标签: android date android-intent

我无法从意图中返回额外内容。我正在发送一个Date类型数据对象,在我的发送活动中,我有以下内容;

Intent intent = getIntent();
intent.putExtra("SELECTED_DATE",SelectedDate);
setResult(RESULT_OK,intent);
finish();

在我接受的活动中;

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
   if(resultCode == RESULT_OK && data != null){
       selectedDate = new Date(data.getExtras().getLong("SELECTED_DATE"));
       displayDate(selectedDate);
   }
}

无论发送的日期是什么,在接收活动中我都会收到Wed Dec 31 19:00:00 EST 1969.当我调试它时,在putExtra命令中设置了正确的日期值,我可以看到意图的mMap值。在接收方,意图显示“有额外”,但mMap = null。

我使用类似的代码返回String类型没有问题。还有什么我需要返回Date类型吗?

2 个答案:

答案 0 :(得分:0)

如果您将Date对象作为参数传递,则将设置Serializable个额外值。如果要检索long,则需要将额外设置为long,因此:

intent.putExtra("SELECTED_DATE",SelectedDate.getTime());

Intent有很多putExtra()方法,你在那里使用的方法是putExtra(String, Serializable),因为Date实现了Serializable。使用键("SELECTED_DATE")检索值时,对象的类型也必须相同。

答案 1 :(得分:0)

您将Date对象作为参数传递给intent并尝试将其返回

基本上你必须发送long或String并在返回活动时获得相同的回复

发送时

intent.putExtra("SELECTED_DATE",SelectedDate.getTime());//this return long val

收到

selectedDate = new Date(data.getExtras().getLong("SELECTED_DATE"));