You need to use interface as a callback to the activity. Then communicate value to fragment.
Its the same with DatePicker. Modify according to your needs
public class FragmentTab1 extends SherlockFragment implements OnClickListener {
Button buttonDate; // change date
Button buttonTime; // change time
TextView textDate; // default current date
TextView textTime; // default current time
TimePickerFragment newFragment;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragmenttab1, container, false);
buttonDate = (Button) rootView.findViewById(R.id.button1);
buttonTime = (Button) rootView.findViewById(R.id.button2);
buttonTime.setOnClickListener(this);
textDate = (TextView) rootView.findViewById(R.id.textView1);
textTime = (TextView) rootView.findViewById(R.id.textView2);
return rootView;
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch(v.getId())
{
case R.id.button1 :
break;
case R.id.button2:
newFragment = new TimePickerFragment();
newFragment.show(getSherlockActivity().getSupportFragmentManager(), "timePicker");
break;
}
}
public void setTimet(String text)
{
textDate.setText(text);
}
}
TimerPickerFragment
public class TimePickerFragment extends DialogFragment
implements TimePickerDialog.OnTimeSetListener {
public interface PickTime
{
public void returnTime(String value);
}
PickTime mCallback;
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
// Use the current time as the default values for the picker
mCallback = (PickTime) getActivity();
final Calendar c = Calendar.getInstance();
int hour = c.get(Calendar.HOUR_OF_DAY);
int minute = c.get(Calendar.MINUTE);
// Create a new instance of TimePickerDialog and return it
return new TimePickerDialog(getActivity(), this, hour, minute,
DateFormat.is24HourFormat(getActivity()));
}
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
// Do something with the time chosen by the user
if(mCallback!=null)
{
StringBuilder sb = new StringBuilder();
sb.append(hourOfDay);
sb.append(":");
sb.append(minute);
mCallback.returnTime(sb.toString());
}
}
}
In Activity
public class MainActivity extends SherlockFragmentActivity implements PickTime{
FragmentTab1 newFragment;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
newFragment = new FragmentTab1();
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.content, newFragment);
transaction.addToBackStack(null);
transaction.commit();
}
@Override
public void returnTime(String value) {
newFragment.setTimet(value);
}
}
Snap