Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/180.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如果分钟数超过60分钟,则增加小时数_Android_Time_Android Seekbar - Fatal编程技术网

Android 如果分钟数超过60分钟,则增加小时数

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显示

我的申请表中有两个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

这是我的密码:-

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。