如何从意图中获取额外日期?

时间:2014-11-30 19:31:28

标签: java android date android-intent

我正在打包一个意图,我添加的其中一个是一个日期对象,如下所示:

intent.putExtra(DATE_EXTRA, t.getDate());

后来,当我阅读临时演员时,我试着像这样得到日期:

this.date = new Date(intent.getExtras().getString(DATE_EXTRA));

但是,这会返回有关String为空的错误。我不认为以上是正确的方法,因为我不是在找字符串,但我无法在任何地方找到intent.getDateExtra()方法。我该怎么办?

我知道日期已正确传递,因为我可以在调试时看到它: enter image description here

3 个答案:

答案 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) }
    }
 }