【发布时间】:2017-03-07 19:14:57
【问题描述】:
您好,尝试从各自的类中获取日期和时间的值,并将它们设置在片段中的文本视图上。 我试过将它设置在一个变量中并从方法中调用它,但它似乎不起作用
这是我在片段类中的代码,我想设置文本视图 set_date 和 set_time
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_edit_timetable, container, false);
selectDate = (Button) view.findViewById(R.id.selectDate);
selectTime = (Button) view.findViewById(R.id.selectTime);
set_date = (TextView) view.findViewById(R.id.set_date);
set_time = (TextView) view.findViewById(R.id.set_time);
selectDate.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// Show Date dialog
DialogFragment newFragment = new SelectDateFragment();
newFragment.show(getActivity().getFragmentManager(), "Date Picker");
}
});
selectTime.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// Show time dialog
DialogFragment newFragment = new SelectTimeFragment();
//newFragment.show(getActivity().getFragmentManager(), DIALOG_TIME);
newFragment.show(getActivity().getFragmentManager(), "Time Picker");
}
});
return view;
}
SelectDateFragment 类
public class SelectDateFragment extends DialogFragment implements DatePickerDialog.OnDateSetListener {
private String date = "";
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
final Calendar calendar = Calendar.getInstance();
int yy = calendar.get(Calendar.YEAR);
int mm = calendar.get(Calendar.MONTH);
int dd = calendar.get(Calendar.DAY_OF_MONTH);
return new DatePickerDialog(getActivity(), this, yy, mm, dd);
}
@Override
public void onDateSet(DatePicker view, int yy, int mm, int dd) {
populateSetDate(yy, mm+1, dd);
}
public void populateSetDate(int year, int month, int day) {
date = month+"/"+day+"/"+year;
}
public String getDate() {
return date;
}
SelectTimeFragment 类
public class SelectTimeFragment extends DialogFragment implements TimePickerDialog.OnTimeSetListener {
private String time = "";
public SelectTimeFragment() {
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
// Use the current time as the default values for the picker
final Calendar calendar = Calendar.getInstance();
int hour = calendar.get(Calendar.HOUR_OF_DAY);
int minute = calendar.get(Calendar.MINUTE);
// Create a new instance of TimePickerDialog and return it
return new TimePickerDialog(getActivity(), this, hour, minute,
DateFormat.is24HourFormat(getActivity()));
}
@Override
public void onTimeSet(TimePicker view, int hour, int minute) {
time = String.valueOf(hour) + ":" + String.valueOf(minute);
}
public String getTime() {
return time;
}
【问题讨论】:
-
为什么要使用片段对话框。 DatePickerDialog 就足够了,您应该在按钮的 onClick 处创建并显示它。
-
只关注日期字段,您是否确认您在
onDateSet()中获得了您期望的值?
标签: android android-fragments datepicker fragment timepicker