rohit
rohit

Reputation: 89

how to disable Past time on timer picker dialog in android

This is my code. Please explain how can i disable past time using time picker dialog and give some code how to disable past time in this code and how to apply this using android time picker dialog . Time picker dialog class does not have any setMinTime method and how to get it.

time.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            Calendar mcurrentTime = Calendar.getInstance();
            int hour = mcurrentTime.get(Calendar.HOUR_OF_DAY);
            int minute = mcurrentTime.get(Calendar.MINUTE);

            TimePickerDialog mTimePicker;

            mTimePicker = new TimePickerDialog(
                    FillServiceDetailActivity.this,
                    new TimePickerDialog.OnTimeSetListener() {
                        @Override
                        public void onTimeSet(TimePicker timePicker,
                                              int selectedHour, int selectedMinute) {
                            String AM_PM;
                            int hour;
                            String[] sp=currentTime.split(":");

                            int hour1=Integer.parseInt(sp[0]);
                            int min1=Integer.parseInt(sp[1]);
                            //Toast.makeText(FillServiceDetailActivity.this,"selected hour:\t"+String.valueOf(selectedHour),Toast.LENGTH_LONG).show();
                            String timeSet = "";
                            if (selectedHour > 12 && hour1>12) {
                                selectedHour -= 12;
                                hour1-=12;
                                timeSet = "PM";
                            } else if (selectedHour == 0) {
                                selectedHour += 12;

                                timeSet = "AM";
                            } else if (selectedHour == 12)

                                timeSet = "PM";
                            else
                                timeSet = "AM";


                            String minutes = "";
                            if (selectedMinute < 10)
                                minutes = "0" + selectedMinute;
                            else
                                minutes = String.valueOf(selectedMinute);

                            /*if(selectedHour>12) {

                                hour = selectedHour - 12;
                                    AM_PM = "PM";

                            }   else  if(selectedHour==12)
                            {
                                hour=selectedHour;
                                AM_PM="PM";
                            }
                            else {
                                hour=selectedHour;
                                AM_PM="AM";
                            }*/

                            //Toast.makeText(FillServiceDetailActivity.this,String.valueOf(hour1),Toast.LENGTH_LONG).show();
                            //Toast.makeText(FillServiceDetailActivity.this,String.valueOf(selectedHour),Toast.LENGTH_LONG).show();

                                time.setText(selectedHour + ":" + minutes + "\t" + timeSet);




                        }
                    }, hour, minute, false);// Yes 24 hour time
            mTimePicker.setTitle("Select Time");

            mTimePicker.show();


        }
    });

Any help is appreciated.Thanks

Upvotes: 4

Views: 10754

Answers (1)

Vishwesh Jainkuniya
Vishwesh Jainkuniya

Reputation: 2839

For more info visit this page.

Use this library.

enter image description here

Dependency

 dependencies {
      compile 'com.wdullaer:materialdatetimepicker:2.3.0'
    }

use this to show Dialog

Calendar now = Calendar.getInstance();
                TimePickerDialog tpd = TimePickerDialog.newInstance(
                        MainActivity.this,
                        now.get(Calendar.HOUR_OF_DAY),
                        now.get(Calendar.MINUTE),
                        mode24Hours.isChecked()
                );
                tpd.setThemeDark(modeDarkTime.isChecked());
                tpd.vibrate(vibrateTime.isChecked());
                tpd.dismissOnPause(dismissTime.isChecked());
                tpd.enableSeconds(enableSeconds.isChecked());
                if (modeCustomAccentTime.isChecked()) {
                    tpd.setAccentColor(Color.parseColor("#9C27B0"));
                }
                if (titleTime.isChecked()) {
                    tpd.setTitle("TimePicker Title");
                }
                if (limitTimes.isChecked()) {
                    tpd.setTimeInterval(2, 5, 10);
                }
                tpd.setOnCancelListener(new DialogInterface.OnCancelListener() {
                    @Override
                    public void onCancel(DialogInterface dialogInterface) {
                        Log.d("TimePicker", "Dialog was cancelled");
                    }
                });
                tpd.show(getFragmentManager(), "Timepickerdialog");

Get Time from Dialog when user select time.

@Override
public void onTimeSet(RadialPickerLayout view, int hourOfDay, int minute) {
  String time = "You picked the following time: "+hourOfDay+"h"+minute;
  timeTextView.setText(time);
}

Use this to set minimum time

setMinTime(Timepoint time)

example

tpd.setMinTime(now2.get(Calendar.HOUR_OF_DAY),now2.get(Calendar.MINUTE),
                        now2.get(Calendar.SECOND));

In above example MinTime is current Time.

method setMinTime have three arguments hour, minutes, second;

setMinTime(5,0,0); // By using this minTime is set to 5 'o clock.

Upvotes: 6

Related Questions