我正在编写一个Android应用程序,其中在一个片段中,用户通过对话片段中包含的时间选择器进入他们开始早上通勤的时间。这将输入到GregorianCalendar对象中。当我在两个片段中检查对象的toString方法时,我选择的设置都在那里,包括小时,分钟和AM / PM值。我的问题是,当我调用相应的TextView的set文本方法时,每小时总是默认为12,即使在GregorianCalendar对象的toString方法中,所有值都已成功传递。出于某种原因,当我调用getTime()时,我特意丢失了一小时。我是一名入门级编码器,所以我确信我有一些东西,但是我无法在API中找到答案。我想也许getTime()可以返回默认值,但是为什么分钟完好无损?
这种方法的目的是在收到额外内容后调用其setText()时更新mDisplayWorkCommute textview,这就是我看到文本一直保持默认小时(12)但仍然显示分钟的地方已设定的值。我把它缩小到我在这里做错的事情,但问题总是存在于其他地方。任何帮助将不胜感激。
public void updateText()
{
if (mUser.mDriveToWorkTime.toString() + mUser.workWeekString() != null)
{
Log.i(MAIN_MENU, mUser.mDriveToWorkTime.toString());
SimpleDateFormat sdf = new SimpleDateFormat("hh:mm aa", Locale.getDefault());
mDisplayWorkCommute.setText((CharSequence)(sdf.format(mUser.mDriveToWorkTime.getTime()) +" , " + mUser.workWeekString()));
}
}
编辑:
String
被强制转换为CharSequence
,因为将字符串传递给TextView
的{{1}}似乎会导致Eclipse继续告诉我我传递了无效的参数。我刚刚尝试了它并且它编译得很好,Eclipse这次没有惊慌失措,所以它被击败了。 mDriveToWorkTime是我正在使用的GregorianCalendar对象,根据其.setText()
java.util.GregorianCalendar中[时间= ?, areFieldsSet =假,宽大=真,区=美国/纽约,Firstdayofweek可= 1,minimalDaysInFirstWeek = 1,ERA = ?, YEAR = 1,月= 1,WEEK_OF_YEAR =? ,WEEK_OF_MONTH = ?, DAY_OF_MONTH = 1,DAY_OF_YEAR = ?, DAY_OF_WEEK = ?, DAY_OF_WEEK_IN_MONTH = ?, AM_PM = 0,HOUR =?HOUR_OF_DAY = 9,MINUTE = 45,SECOND = 1,微差= ?, ZONE_OFFSET = ?, DST_OFFSET =?]
创建的toString()
对象返回
2月01日00:45:01 EST 1
作为Date
。每小时都会重置为默认值,但分钟保持不变。这是mDisplayWorkCommute的XML(它在toString()
中设置):
RelativeLayout