2013-05-06 34 views
4
timeOfMark = Calendar.getInstance(Locale.ENGLISH); 
Map<String, Integer> what = timeOfMark.getDisplayNames(Calendar.HOUR, Calendar.SHORT, Locale.ENGLISH); 

    for(Map.Entry<String, Integer> pair : what.entrySet()) 
    { 
     Log.e(pair.getKey(), Integer.toString(pair.getValue())); 
    } 

这种情况下我的android应用程序崩溃,因为Log.e不能接受空字符串。Android Java日历getDisplayName/s返回null

它与

timeOfMark.getDisplayName(Calendar.HOUR, Calendar.SHORT, Locale.ENGLISH); 

我试图与输入参数许多变化同样的事情。对于语言环境,我也做了Locale.getDefault()等等。还是一样* *

没有运气。有什么可以解决这个问题吗?或者一个简单的解决方法?

+0

什么是你想获得?检查我的答案,以了解更多关于getDisplayNames – Pragnani 2013-05-06 12:49:53

+0

我想要时间,天,日期。尚未确定。但我确信,无论我投入领域,我都应该得到字符串。 好的,会做的。 – 2013-05-06 12:55:34

回答

9

公共地图getDisplayNames(INT场,INT风格,语言环境的语言环境)

这个方法返回一个包含样式的所有显示名称的Map本地化和它们的字段值,或null如果没有字符串表达式可用。

timeOfMark.getDisplayName(Calendar.HOUR, Calendar.SHORT, Locale.ENGLISH); 

没有HOUR的字符串表示,即你可以在string表达HOURS像我们做了一个月,DAY_OF_WEEK

尝试每周,每月 例

Map< String, Integer> representations = 
     now.getDisplayNames(Calendar.MONTH, Calendar.ALL_STYLES, locale); 

您将得到

{Apr=3, April=3, Aug=7, August=7, Dec=11, December=11, Feb=1, February=1, Jan=0, January=0, Jul=6, July=6, Jun=5, June=5, Mar=2, March=2, May=4, Nov=10, November=10, Oct=9, October=9, Sep=8, September=8} 

对于Calendar.DAY_OF_WEEK

{Fri=6, Friday=6, Mon=2, Monday=2, Sat=7, Saturday=7, Sun=1, Sunday=1, Thu=5, Thursday=5, Tue=3, Tuesday=3, Wed=4, Wednesday=4} 

尝试这里

http://www.browxy.com/SubmittedCode/18596

+0

哦,我明白了,这对两种方法都有意义(getDisplayname/s)。为什么我认为整数类型自动转换并返回字符串?哇有点跛脚,但现在我看到问题。 该死的耻辱我不能为你投票:) – 2013-05-06 13:02:11

+0

供将来参考: Integer.toString(timeOfMark.get(Calendar.HOUR_OF_DAY)); 以字符串形式返回时间的24h表示。 – 2013-05-06 13:06:36