Java – Time Selector dialog box

Time Selector dialog box… here is a solution to the problem.

Time Selector dialog box

I’m using multiple TextView with onclick listeners that direct me to the TimePicker dialog.

But after watching the tutorial, I don’t seem to know how to write code

    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);
        }
    });

Show dialog box:

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

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, how should I write code for a textview that calls the time selector after the TimePickerDialog.OnTimeSetListener callback?

The answer is simple, but I lack OOP knowledge and am still learning.
Thanks….

Solution

You need to use global variables. For example, 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="";
                }
    };

Related Problems and Solutions