我正在打包一个意图,我添加的其中一个是一个日期对象,如下所示:
intent.putExtra(DATE_EXTRA, t.getDate());
后来,当我阅读临时演员时,我试着像这样得到日期:
this.date = new Date(intent.getExtras().getString(DATE_EXTRA));
但是,这会返回有关String为空的错误。我不认为以上是正确的方法,因为我不是在找字符串,但我无法在任何地方找到intent.getDateExtra()
方法。我该怎么办?
我知道日期已正确传递,因为我可以在调试时看到它:
答案 0 :(得分:11)
替换:
this.date = new Date(intent.getExtras().getString(DATE_EXTRA));
使用:
this.date = (Date)intent.getSerializableExtra(DATE_EXTRA);
看看是否有帮助。
答案 1 :(得分:0)
另一种解决方法是传递日期的长值:
intent.putExtra(DATE_EXTRA, t.getDate().getTime());
....
this.date = new Date(intent.getLongExtra(DATE_EXTRA, 0)); //0 is the default value
答案 2 :(得分:0)
科特林的安全之路:
intent.putExtra("MOVE_DATE", date)
并通过检查键和空值检查以安全的方式阅读它:
val moveDate: Date?
intent?.apply {
if (hasExtra("MOVE_DATE")) {
moveDate = getSerializableExtra("MOVE_DATE") as? Date
moveDate?.let { print(it) }
}
}