Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

TimePicker Dialog

Tags:

java

android

I'm using multiple textviews with onclick listeners that direct me to a TimePicker Dialog.

However I cannot seem to know how to write the code after reading the tutorials,

    textview1.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            showDialog(TIME_DIALOG_ID);
        }
    });

    textview2.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            showDialog(TIME_DIALOG_ID);
        }
    });

To show the dialog:

@Override
protected Dialog onCreateDialog(int id) {
    switch (id) {
    case TIME_DIALOG_ID:
        return new TimePickerDialog(this,
                mTimeSetListener, mHour, mMinute, true);
    }
    return null;
}

and finally,

private TimePickerDialog.OnTimeSetListener mTimeSetListener =
        new TimePickerDialog.OnTimeSetListener() {
            @Override
            public void onTimeSet(android.widget.TimePicker view,
                    int hourOfDay, int minute) {
                mHour = hourOfDay;
                mMinute = minute;
            }
        };

now, to .setText for the textview that CALLED the timepicker after the TimePickerDialog.OnTimeSetListener callback, how should I write the code?

The answer is very simple but I lack OOP knowledge and still learning. Thanks...

like image 460
usernotnull Avatar asked Aug 16 '26 03:08

usernotnull


2 Answers

You need to use a global varible. say,String fromWhere="";

now,

    textview1.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                fromWhere="textview1";
                showDialog(TIME_DIALOG_ID);
            }
    });

    textview2.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                fromWhere="textview2";
                showDialog(TIME_DIALOG_ID);
            }
    });
    ...
    private TimePickerDialog.OnTimeSetListener mTimeSetListener =
            new TimePickerDialog.OnTimeSetListener() {
                @Override
                public void onTimeSet(android.widget.TimePicker view,
                        int hourOfDay, int minute) {

                    if(fromWhere.equals(textview1))
                           // set hour and minute to according variable and textview
                    else if(fromWhere.equals(textview2))
                           // set hour and minute to according variable and textview
                    .. //so on for others
                    //mHour = hourOfDay;
                    //mMinute = minute;
                    fromWhere="";
                }
    };
like image 126
Hiral Vadodaria Avatar answered Aug 18 '26 16:08

Hiral Vadodaria


create a member variable (say int whichViewClicked = 0) in your class to keep track of the textview clicked to bring-up the time-picker.

Now if you click textview1 set whichViewClicked = 1, if textview2 is clicked set whichViewClicked = 2 and so on. In the onTimeSet() method check the value of whichViewClicked and set the textview text accordingly

like image 32
pankajagarwal Avatar answered Aug 18 '26 15:08

pankajagarwal



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!