【问题标题】:Android: Passing Date in putExtraAndroid:在 putExtra 中传递日期
【发布时间】:2018-04-18 03:10:12
【问题描述】:

我正在启动一项活动,并希望将 Date(Time) 值传递给它。我已经使用 i.putExtra("noteName", "Hello World") 传递了所有其他参数,但我不知道如何传递日期值,然后使用 getExtra() 将其作为日期检索。

我可以轻松使用i.putExtra("noteDate",noteDate);

但是我如何在Activity 的onCreate() 中检索它;我没有看到extras.getDate()?

我应该将其转换为Float,然后再转换回来(在Activity 中)吗?

谢谢

【问题讨论】:

    标签: android android-activity


    【解决方案1】:

    使用date.getTime() 和date.setTime() 并将其作为Long 传输。

    i.putExtra("date", date.getTime());
    
    Date d = new Date();
    d.setTime(i.getLongExtra("date", -1));
    

    【讨论】:

    • 谢谢,但我遇到了麻烦,无论我做什么,我的日期都会返回 1970 年 1 月 1 日。
    • 检查 i.getLongExtra() 返回的内容,如果“日期”不在附加内容中,则返回 -1。
    • 是的,它是-1,但如果我执行 i.putExtra("noteDate", noteDate.toString());我可以 extras.getString("noteDate"));并且价值通过。如果我把它作为一个日期并使用 getIntent.getLongExtra("noteDate",-1)) 我回来 -1 ?
    【解决方案2】:

    最好转换为long,使用putExtra(String name, long value) 并重新创建,然后返回新的Activity。

    【讨论】:

    【解决方案3】:

    我只是用过

    i.putExtra("noteDate",myDate);
    

    然后是我使用的活动:

    Date dt = new Date(extras.getString("noteDate"));
    

    它就像一个魅力!?这很危险吗?假设日期将始终在所有设备上正确解析?

    【讨论】:

    • 现在已弃用。所以最好使用 date.getTime() 和 date.setTime()。
    【解决方案4】:

    代替

    i.putExtra("date", date.getTime());
    Date d = new Date();
    d.setTime(i.getLongExtra("date", -1));
    

    使用:如果您使用日历而不是日期来获取长值

    i.putExtra("date", date.getTime().getTime); 
    Date d = new Date();
    d.setTime(i.getLongExtra("date", -1));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-01-15
      • 1970-01-01
      • 1970-01-01
      • 2018-08-27
      • 2013-05-08
      • 2020-12-06
      • 1970-01-01
      • 2020-08-02
      相关资源
      最近更新 更多