Here is the code of TimePickerFragment.Java
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.app.Dialog;
import android.app.DialogFragment;
import android.app.TimePickerDialog;
import android.os.Bundle;
import android.text.format.DateFormat;
import android.widget.TimePicker;
public class TimePickerFragment extends DialogFragment implements
TimePickerDialog.OnTimeSetListener {
OnTimeSelectedListener tListener;
static TimePickerFragment newInstance(String time) {
TimePickerFragment t = new TimePickerFragment();
// Supply num input as an argument.
Bundle args = new Bundle();
args.putString("time", time);
t.setArguments(args);
return t;
}
@SuppressLint("SimpleDateFormat")
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
SimpleDateFormat formatter;
String dTime;
dTime = getArguments().getString("time");
formatter = new SimpleDateFormat("hh:mm");
if (dTime.equalsIgnoreCase("null") || dTime.equalsIgnoreCase("")) {
Calendar cal = Calendar.getInstance();
dTime = formatter.format(cal.getTime());
}
Date date = null;
try {
date = (Date) formatter.parse(dTime);
} catch (ParseException e) {
e.printStackTrace();
}
return new TimePickerDialog(getActivity(), this, date.getHours(),
date.getMinutes(), DateFormat.is24HourFormat(getActivity()));
}
@Override
public void onAttach(Activity activity) {
// TODO Auto-generated method stub
super.onAttach(activity);
try {
tListener = (OnTimeSelectedListener) activity;
} catch (ClassCastException e) {
throw new ClassCastException(activity.toString()
+ " must implement OnTimeSelectedListener");
}
}
public interface OnTimeSelectedListener {
public void onTimeSelected(String selectedTime);
}
@Override
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
// Add leading zeros if required
String hours = (String) ((hourOfDay < 10) ? "0" + hourOfDay : Integer
.toString(hourOfDay));
String minutes = (String) ((minute < 10) ? "0" + minute : Integer
.toString(minute));
String time = hours + ":" + minutes;
tListener.onTimeSelected(time);
}
}
Here is the code to utilize the TimePickerFragment in the Activity.
EditText fieldTime = new EditText(this);
fieldTime.setFocusable(false);
fieldTime.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
ShowTime(v);
}});
public void ShowTime(View view)
{
CurrentFragmentControlid= view.getId();
String time= ((EditText)view).getText().toString();
TimePickerFragment timeFragment = TimePickerFragment.newInstance(time);
FragmentManager manager=getFragmentManager();
timeFragment.show(manager, "timePicker");
}
@Override
public void onTimeSelected(String selectedTime) {
EditText editText=(EditText) this.findViewById(CurrentFragmentControlid);
editText.setText(selectedTime);
}