【问题标题】:How to get Date extra from an intent?如何从意图中获取额外的日期?
【发布时间】:2014-11-30 19:31:28
【问题描述】:

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

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

后来,当我阅读额外内容时,我尝试这样获取日期:

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

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

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

【问题讨论】:

    标签: java android date android-intent


    【解决方案1】:

    替换:

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

    与:

    this.date = (Date)intent.getSerializableExtra(DATE_EXTRA);
    

    看看有没有帮助。

    【讨论】:

    • 奇怪的是,当我可以调用 getString、getDouble、getLong 等时,您可以额外添加日期但不能调用 getDateExtra...
    • @McAdam331:“你是天赐之物”——你心中有一个不寻常的神。 :-) “当我可以调用 getString、getDouble、getLong 等时”——doublelong 是原语,StringDate 更受欢迎。
    【解决方案2】:

    另一种解决方法是传递日期的长值:

    intent.putExtra(DATE_EXTRA, t.getDate().getTime());
    ....
    this.date = new Date(intent.getLongExtra(DATE_EXTRA, 0)); //0 is the default value
    

    【讨论】:

      【解决方案3】:

      kotlin 中的安全方式:

        intent.putExtra("MOVE_DATE", date)
      

      并通过检查密钥和空值检查以安全的方式阅读它:

       val moveDate: Date?     
       intent?.apply {
       if (hasExtra("MOVE_DATE")) {
             moveDate = getSerializableExtra("MOVE_DATE") as? Date
             moveDate?.let { print(it) }
          }
       }
      

      【讨论】:

        猜你喜欢
        • 2023-03-25
        • 2021-04-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多