我似乎不知道在onTimeSet()方法中放置什么,以便将setText放到与其关联的按钮中。
我希望用户点击布局中的按钮,然后显示TimePickerDialog。一旦用户选择了他们想要使用的时间,我希望时间设置为相同的按钮文本。
有什么想法吗?
public class TimePickerFragment extends DialogFragment implements
TimePickerDialog.OnTimeSetListener {
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
// Use the current time as the default values for the picker
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
}
}发布于 2013-09-06 06:00:38
是的,把数据从片段传回给包含的活动有点复杂。
基本上,您有两个选项,一个简单且向前倾斜,另一个更复杂,但从长远来看(对于更复杂的需求)将是更好的选择:
简单
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
String timeString = hourOfDay+" "+minute; // <-- just for example, you'll want to do better time-formatting here.
Button b = (Button)getActivity().findViewById(R.id.yourButtonsId);
b.setText(timeString);
}精密
在片段中使用侦听器接口,并使活动实现该接口,并将自身设置为片段的侦听器:
将此添加到您的片段中:
public interface Listener {
public void setTime(int hourOfDay, int minute);
}
// hold the listener
private Listener mListener;
// used by Activity to set itself as the listener for the fragment
public void setListener(Listener listener) {
mListener = listener;
}在片段中实现onTimeSet,如下所示:
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
if (mListener != null) mListener.setTime(hourOfDay, minute);
}将implements TimePickerFragment.Listener添加到活动的类声明中。
在活动中实现侦听器的public void setTime(int hourOfDay, int minute)方法,例如:
public void setTime(int hourOfDay, int minute) {
String timeString = hourOfDay+" "+minute; // <-- just for example, you'll want to do better time-formatting here.
Button b = (Button)findViewById(R.id.yourButtonsId);
b.setText(timeString);
}实例化片段后,将其添加到活动中:
timePickerFragment.setListener(this);发布于 2013-09-06 04:12:57
// button click listener
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if(button.getText().toString().trim().length()>0){
getTimeDialog(button.getText().toString(), new CustomClickListner() {
@Override
public void onClick(String value) {
btnLogin.setText(value);
}
});
}else{
getTimeDialog("", new CustomClickListner() {
@Override
public void onClick(String value) {
btnLogin.setText(value);
}
});
}
}
});
// custom interface time dialog set time listener
public interface CustomClickListner {
public void onClick(String value);
}
// open time dialog
public void getTimeDialog(final String strTime, final CustomClickListner target) {
Calendar date = getTimeFromString(strTime);
TimePickerDialog timeDialog = new TimePickerDialog(this, new TimePickerDialog.OnTimeSetListener() {
@Override
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
Calendar date = Calendar.getInstance();
date.set(Calendar.HOUR_OF_DAY, hourOfDay);
date.set(Calendar.MINUTE, minute);
String dateString = new SimpleDateFormat("kk:mm:ss").format(date);
target.onClick(dateString);
}
}, date.get(Calendar.HOUR), date.get(Calendar.MINUTE), true);
timeDialog.show();
}发布于 2013-09-06 04:36:08
只需使用以下步骤
private void SetTime() {
buttonTaskTime.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
String taskTime = buttonTaskTime.getText().toString();
int mHour = Integer.parseInt(taskTime.split(":")[0]);
String minutesmeridian = taskTime.split(":")[1];
int mMinute = Integer.parseInt(minutesmeridian.split(" ")[0]);
String mMeridian = minutesmeridian.split(" ")[1];
if (mMeridian.equals(postMeridain)) {
if (!(mHour == 12)) {
mHour += 12;
}
} else {
if (mHour == 12) {
mHour += 12;
}
}
hour = mHour;
minute = mMinute;
new TimePickerDialog(getActivity(), R.style.Theme_CustomDialog,
timePicker, hour, minute, false).show();
}
});
}
TimePickerDialog.OnTimeSetListener timePicker = new TimePickerDialog.OnTimeSetListener() {
@Override
public void onTimeSet(TimePicker view, int hourOfDay, int minutes) {
hour = hourOfDay;
minute = minutes;
calendarNewTaskTime.set(Calendar.HOUR_OF_DAY, hourOfDay);
calendarNewTaskTime.set(Calendar.MINUTE, minutes);
calendarNewTaskTime.set(Calendar.SECOND, 0);
UpdateTime();
}
};
private void UpdateTime() {
String meridian = " ";
if (hour > 12) {
hour -= 12;
meridian = "PM";
} else if (hour == 0) {
hour = 12;
meridian = "AM";
} else if (hour == 12)
meridian = "PM";
else
meridian = "AM";
String min = " ";
if (minute < 10) {
min = "0" + minute;
} else
min = String.valueOf(minute);
buttonTaskTime.setText(hour + ":" + min + " " + meridian);
}https://stackoverflow.com/questions/18649180
复制相似问题