遇到当前代码的问题,使用谷歌指南的时间/日期选择器片段类。 show方法不起作用。我的错误在show方法中。
newfragment ..(..getsupportfragmentmanager ...)我没有所有的代码atm在工作休息时写这个,所以我不会忘记。
任何帮助都会很棒。
答案 0 :(得分:0)
我找到了那些有 getSupportFragmentManager()错误的人的答案。
更改指向......
<强> getFragmentManager()强>
然后
确保您的导入显示此
导入android.support.v4.app.DialogFragment;
你应该好好去!
您现在可以显示时间/日期选择器对话框 WITHIN a FRAGMENT 。
更新 - 编辑
这个答案适用于片段。我已经从使用片段转移到我的应用程序的更大目的。对于那些希望将其用于活动的人。我能够轻松地完成这项工作。
这可以用于将日期/时间设置为 TextViews 或按钮。
您可以在任何实例中使用以下内容在任何活动中传递给TextView或Button后获取字符串。通过应用 getActivity(),然后继续:
YOURTEXTVIEW.getText().toString();
或强>
YOURBUTTON.getText().toString();
将正确的日期/时间设置为所需的TextView或按钮。
<强>日期选择器强>
public class DatePicker extends DialogFragment implements DatePickerDialog.OnDateSetListener{
public static String TAG = DatePicker.class.getSimpleName();
public Calendar c = Calendar.getInstance();
public Dialog onCreateDialog(Bundle savedInstanceState) {
// Use the current date as the default date in the picker
final Calendar c = Calendar.getInstance();
int year = c.get(Calendar.YEAR);
int month = c.get(Calendar.MONTH);
int day = c.get(Calendar.DAY_OF_MONTH);
// Create a new instance of DatePickerDialog and return it
return new DatePickerDialog(getActivity(), this, year, month, day);
}
@Override
public void onDateSet(android.widget.DatePicker view, int year, int monthOfYear, int dayOfMonth) {
String date = new SimpleDateFormat("MMM, dd, yyyy", Locale.ENGLISH)
.format(new Date(year-1900,monthOfYear,dayOfMonth));
Button rdb = (Button)getActivity().findViewById(R.id.Request_Button_Date);
rdb.setText(date);
}
}
您需要从年中减去 1900,如上面的代码所示,以收集准确的正确的年份值。
<强> TimePicker 强>
public class TimePicker extends DialogFragment implements TimePickerDialog.OnTimeSetListener{
public static String TAG = TimePicker.class.getSimpleName();
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
// Use the current date as the default date in 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 DatePickerDialog and return it
return new TimePickerDialog(getActivity(), this, hour, minute,
DateFormat.is24HourFormat(getActivity()));
}
@Override
public void onTimeSet(android.widget.TimePicker view, int hourOfDay, int minute) {
Time t = new Time(hourOfDay,minute,0);//seconds by default set to zero
Format formatter;
formatter = new SimpleDateFormat("h:mm a", Locale.ENGLISH);
String time = formatter.format(t);
Button rtb = (Button)getActivity().findViewById(R.id.Request_Button_Time);
rtb.setText(time);
}
}
注意上下文是如何 getActivity(),而OnDateSetListener CallBack是这个。这确保了为此调用正确的上下文和回调。在我的例子中,我需要在这个片段中发生回调。
你去吧。你应该全部设置:)