cagridemir
cagridemir

Reputation: 1

How to get hour and minute from one timePickerDialog twice for start time and end time

timepickerdialog screenshot1 2 I just need to get the start and end time from a timepickerdialog and set a TextView by using start and end time values but I have the same start and end time values because I can not get the value from timepicker for start time and when I click done, It assigns both the last value of timepicker which makes sense. By the way, If there is a bad code implementation, I am really sorry. Thank you for any help.

private int openingHour = 0;
private int openingMinute = 0;
private int closingHour = 0;
private int closingMinute = 0;
private void setWorkingHoursTextView() {
    // TODO Auto-generated method stub
    Calendar mCurrentTime = Calendar.getInstance();
    int initialHour = mCurrentTime.get(Calendar.HOUR_OF_DAY);
    int initialMinute = mCurrentTime.get(Calendar.MINUTE);
    TimePickerDialog mTimePickerDialog = new TimePickerDialog(getContext(), new TimePickerDialog.OnTimeSetListener() {
        @Override
        public void onTimeSet(TimePicker timePicker, int selectedHour, int selectedMinute) {
                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
                        openingHour = timePicker.getHour();
                        openingMinute = timePicker.getMinute();
                   if (openingHour != 0) {
                        closingHour = timePicker.getHour();
                        closingMinute = timePicker.getMinute();
                    }
                }
                else {
                    if (openingHour != 0) {
                        closingHour = timePicker.getCurrentHour();
                        closingMinute = timePicker.getCurrentMinute();
                    }
                    else {
                        openingHour = timePicker.getCurrentHour();
                        openingMinute = timePicker.getCurrentMinute();
                    }
                }
            workingHoursTextView.setText(
                    openingHour + ":" + openingMinute + "-" + closingHour + ":" + closingMinute);
        }
    }, initialHour, initialMinute, true);//Yes 24 hour time
    mTimePickerDialog.setMessage("Opening Time");
    mTimePickerDialog.show();
    mTimePickerDialog.getButton(DialogInterface.BUTTON_NEUTRAL).setVisibility(View.VISIBLE);
    mTimePickerDialog.getButton(DialogInterface.BUTTON_NEUTRAL).setText("Cancel");
    mTimePickerDialog.getButton(DialogInterface.BUTTON_NEUTRAL).setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            mTimePickerDialog.dismiss();
        }
    });
    mTimePickerDialog.getButton(DialogInterface.BUTTON_NEGATIVE).setText("Next");
    mTimePickerDialog.getButton(DialogInterface.BUTTON_NEGATIVE).setTag("Next");
    mTimePickerDialog.getButton(DialogInterface.BUTTON_NEGATIVE).setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            mTimePickerDialog.updateTime(initialHour, initialMinute);
            if (mTimePickerDialog
                    .getButton(DialogInterface.BUTTON_NEGATIVE).getTag().equals("Next")) { //Next
                mTimePickerDialog.setMessage("Closing Time");
                mTimePickerDialog.getButton(DialogInterface.BUTTON_NEGATIVE).setText("Back");
                mTimePickerDialog.getButton(DialogInterface.BUTTON_NEGATIVE).setTag("Back");
            }
            else if (mTimePickerDialog
                    .getButton(DialogInterface.BUTTON_NEGATIVE).getTag().equals("Back")){ //Back
                mTimePickerDialog.setMessage("Opening Time");
                mTimePickerDialog.getButton(DialogInterface.BUTTON_NEGATIVE).setText("Next");
                if (openingHour != 0 && openingMinute != 0) {
                    mTimePickerDialog.updateTime(initialHour, initialMinute);
                }
                mTimePickerDialog.getButton(DialogInterface.BUTTON_NEGATIVE).setTag("Next");
            }
            else ;
        }
    });
    mTimePickerDialog.getButton(DialogInterface.BUTTON_POSITIVE).setText("Done");

Upvotes: 0

Views: 111

Answers (1)

Erwin Kurniawan A
Erwin Kurniawan A

Reputation: 1008

On TimePickerDialog, there is variable selectedHour and selectedMinute. You can use that to retrieve the value of what you select. The code should be like this

TimePickerDialog mTimePickerDialog = new TimePickerDialog(getContext(), new TimePickerDialog.OnTimeSetListener() {
        @Override
        public void onTimeSet(TimePicker timePicker, int selectedHour, int selectedMinute) {
            if (openingHour != 0) {
                closingHour = selectedHour;
                closingMinute = selectedMinute;
            }
            else {
                openingHour = selectedHour;
                openingMinute = selectedMinute;
            }
            workingHoursTextView.setText(
                    openingHour + ":" + openingMinute + "-" + closingHour + ":" + closingMinute);
        }
    }, initialHour, initialMinute, true);//Yes 24 hour time

Upvotes: 0

Related Questions