Android 如果分钟数超过60分钟,则增加小时数
我的申请表中有两个SeekBar。一个显示小时,另一个以15分钟(0,15,30,45)为间隔进行 我将时间的初始值设置为10.30。Iam在文本视图中显示更改的时间 现在,如果用户只增加分钟seekbar(例如15分钟),textView应该显示10.45。(即10:30+00:15)。类似地,如果用户进一步将分钟seekbar增加到30或45,TextView应分别显示11:00和11:15 目前,一切正常,直到分钟达到15分钟。但当我将SeekBar增加到30或45时,TextView显示的是10:60和10:75 这是我的密码:-Android 如果分钟数超过60分钟,则增加小时数,android,time,android-seekbar,Android,Time,Android Seekbar,我的申请表中有两个SeekBar。一个显示小时,另一个以15分钟(0,15,30,45)为间隔进行 我将时间的初始值设置为10.30。Iam在文本视图中显示更改的时间 现在,如果用户只增加分钟seekbar(例如15分钟),textView应该显示10.45。(即10:30+00:15)。类似地,如果用户进一步将分钟seekbar增加到30或45,TextView应分别显示11:00和11:15 目前,一切正常,直到分钟达到15分钟。但当我将SeekBar增加到30或45时,TextView显示
int hourLimit=10, minLimit=30;
seekBarHour.setOnSeekBarChangeListener(new OnSeekBarChangeListener()
{
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser)
{
}
public void onStartTrackingTouch(SeekBar seekBar) {
// TODO Auto-generated method stub
}
public void onStopTrackingTouch(SeekBar seekBar)
{
if(progressChangedHours == 0 && progressChangedMins==0)
{
txtReachingBy.setText("Reaching by:"+" "+String.valueOf(hourLimit)+":"+String.valueOf(minLimit)+":"+today.second);
}
if(progressChangedHours==0 && mins >=60)
{
hour = 1;
}
else
{
hour = hourLimit + progressChangedHours;
}
timeString = String.valueOf(hour)+":"+String.valueOf(mins)+":"+today.second;
txtReachingBy.setText("Reaching by:"+" "+timeString);
}
});
seekBarMins.setOnSeekBarChangeListener(new OnSeekBarChangeListener()
{
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser)
{
progressChangedMins = progress;
int stepSize = 15;
progressChangedMins = (progressChangedMins/stepSize)*stepSize;
}
public void onStartTrackingTouch(SeekBar seekBar) {
// TODO Auto-generated method stub
}
public void onStopTrackingTouch(SeekBar seekBar)
{
if(progressChangedMins == 0)
{
txtReachingBy.setText("Reaching by:"+" "+String.valueOf(hourLimit)+":"+String.valueOf(30)+":"+today.second);
}
else
{
mins = minLimit +progressChangedMins;
if(progressChangedHours==0 && mins!=0)
{
hour = hourLimit;
}
else if(progressChangedHours>=0 && mins>=60)
{
hour = hour+1;
mins = mins-60;
}
timeString = String.valueOf(hour)+":"+String.valueOf(mins)+":"+today.second;
txtReachingBy.setText("Reaching by:"+" "+timeString);
}
}
});
编辑
:我用日期解决了一部分问题,如下所示:-
DateFormat sdf = new SimpleDateFormat("hh:mm:ss");
Date date;
try
{
date = sdf.parse(initialTime);
cal= Calendar.getInstance();
cal.setTime(date);
txtReachingBy.setText("Reaching By:"+" "+ cal.get(Calendar.HOUR_OF_DAY)+":"+cal.get(Calendar.MINUTE));
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
seekBarMins.setOnSeekBarChangeListener(new OnSeekBarChangeListener()
{
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser)
{
progressChangedMins = progress;
int stepSize = 15;
progressChangedMins = (progressChangedMins/stepSize)*stepSize;
seekBar.setProgress(progressChangedMins);
if(progressChangedHours ==0 && progressChangedMins!=0)
{
lblLateBy.setText("Late By (Hrs):"+" " + String.valueOf(progressChangedHours) +":"+String.valueOf(progressChangedMins));
}
else
lblLateBy.setText("Late By (Hrs):"+" " + String.valueOf(progressChangedHours) +":"+String.valueOf(progressChangedMins));
}
public void onStartTrackingTouch(SeekBar seekBar) {
// TODO Auto-generated method stub
}
public void onStopTrackingTouch(SeekBar seekBar)
{
if(progressChangedMins==0)
{
timeString = cal.get(Calendar.HOUR_OF_DAY)+":"+cal.get(Calendar.MINUTE)+":"+today.second;
}
else
{
cal.add(Calendar.MINUTE, progressChangedMins);
timeString = cal.get(Calendar.HOUR_OF_DAY)+":"+cal.get(Calendar.MINUTE)+":"+today.second;
}
txtReachingBy.setText("Reaching by:"+" "+timeString);
}
});
现在,如果我立即将搜索条拇指拖动到某个值,一切都正常。进度值将添加到初始时间。但如果我将其拖动到一个值,则初始时间会随着加法而改变,如果我将其进一步拖动,则前进的值会添加到新时间,而不是初始时间
将输出作为:-
Drag 1-> 15 mins > Time expected 10.45 (Fine)
Drag 2-> 30 mins > Time expected 11.00 Output I get -> 10.45+00.30 = 11.15
我该如何解决这个问题?你不应该让他们各自进步。只需监控时间。然后根据时间设置两个进度条。例如,使用Date类。好的,如果用户手工操作,那么用几分钟做一些小计算。你应该自己解决这个问题,因为你完全知道哪里出了问题,应该做什么。@greenapps我使用了Date类,它解决了我的一部分问题。我在这里发布了一个新问题,如果你能帮忙,那就太好了。你为什么要发布一个新问题?保留在这里。
我将时间的初始值设置为10.30
。好啊如果你这样做了。seekbars是否处于该位置?一个在10号,另一个在30号?或者您可以将时间设置为10:30,两个搜索栏都在左侧,并且都显示0?在最后一种情况下,seekbar用于将时间增加到10:30。