将SeekBar值添加到初始值AndroidHere i

时间:2014-09-17 10:04:13

标签: android time android-seekbar

我的初始时间值为10:30。我还有两个SeekBar,一个小时和其他几分钟。

当我将SeekBar滑动到某个值时,例如Hour SeekBar,将小时数添加到10:30的初始时间。这很好。

此外,如果我再次将SeekBar拖动到一个新值,那么该值应该添加到初始值,而不是我在第一次拖动后获得的值。

即。如果一开始我把SeekBar拖到1小时并离开SeekBar,时间是11.30。

如果我再次将值拖动到3小时,则将3小时添加到11.30,使时间为2:30,而我希望时间为1:30

这是我的代码: -

String initialTime = "10:30"
cal = Calendar.getInstance();


        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();
        }
seekLateBy.setOnSeekBarChangeListener(new OnSeekBarChangeListener() 
        {


            public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser)
            {
                progressChangedHours = progress;
                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(progressChangedHours==0)
                {
                    timeString = cal.get(Calendar.HOUR_OF_DAY)+":"+cal.get(Calendar.MINUTE)+":"+today.second;
                }
                else
                {
                cal.add(Calendar.HOUR_OF_DAY, progressChangedHours);

                timeString = cal.get(Calendar.HOUR_OF_DAY)+":"+cal.get(Calendar.MINUTE)+":"+today.second;
                }
                txtReachingBy.setText("Reaching by:"+" "+timeString);
            }





        }); 

我该怎么做/

1 个答案:

答案 0 :(得分:0)

根据您的要求,您需要另一个变量来存储进度变化的先前值。

检查以下代码:

    int previousval=0;
    seekLateBy.setOnSeekBarChangeListener(new OnSeekBarChangeListener() 
    {
  public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser)
        {

            progressChangedHours = progress;
       // DO this code if previousval==0
          if(previousval==0){
             previousval = progress;
            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));

        }
     }else{
    // Value is already there.add with the new value
            if(progressChangedHours==0 && progressChangedMins!=0)
            {
                lblLateBy.setText("Late By (Hrs):"+" " +   String.valueOf(progressChangedHours+previousval) +":"+String.valueOf(progressChangedMins));
            }
            else
            lblLateBy.setText("Late By (Hrs):"+" " + String.valueOf(progressChangedHours+previousval) +":"+String.valueOf(progressChangedMins));

        }
    }