我非常惊讶,即使在搜索1小时后我也无法在网上找到它!
我有一个日期选择器对话框,略微修改了原始的Pickers示例(感谢Raghunandan for this)。
但我不想将默认日期设置为当前日期,而是应该从EditText中选择日期并将该日期设置为datepickerdialog。有人可以帮我解决这个问题吗?我目前的代码如下所示。
已编辑 我需要知道如何从DatePickerFragment类中访问EditText datepurchased的值。
主要课程:
public class EditEntry extends Activity implements DatePickerFragment.TheListener{
EditText edit_datepurchased;
public void showdate(View v) {
edit_datepurchased = (EditText) findViewById(v.getId());
DialogFragment newFragment = new DatePickerFragment();
newFragment.show(getFragmentManager(), "datePicker");
}
public void returnDate(String date) {
edit_datepurchased.setText(date);
}
}
DatePickerFragment CLASS:
public class DatePickerFragment extends DialogFragment implements DatePickerDialog.OnDateSetListener {
TheListener listener;
public interface TheListener{
public void returnDate(String date);
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState){
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);
listener = (TheListener) getActivity();
return new DatePickerDialog(getActivity(), this, year, month, day);
}
public void onDateSet(DatePicker view, int year, int month, int day){
Calendar c = Calendar.getInstance();
c.set(year, month, day);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String formattedDate = sdf.format(c.getTime());
if (listener != null)
{
listener.returnDate(formattedDate);
}
//listener.returnDate(year+"-"+(month+1)+"-"+day);
}
}
n.b。:我有一个问题here on same code before,但我不知道如何在旧帖子中添加问题。
答案 0 :(得分:7)
使用SimpleDateFormat
,您可以将edittext中的日期转换为毫秒。
示例:
DateFormat df = new SimpleDateFormat("MM/dd/yyyy",Locale.US);
您需要根据显示格式调整格式,但之后只需使用DateFormat
对象中的解析方法
Date d = df.parse(dateString);
然后创建一个Calendar
对象并设置日期
Calendar calendar = Calendar.getInstance();
calendar.setDate(d);
修改强>
从EditText
发送文本,您需要在创建对话框片段时发送包中的字符串
示例:
DialogFragment newFragment = new DatePickerFragment();
Bundle bundle = new Bundle();
bundle.putString("dateAsText",edit_datepurchased.getText().toString());
newFragment.setArguments(bundle);
newFragment.show(getFragmentManager(), "datePicker");
然后在你的dialogfragment中使用getArguments()
来获取包
Bundle bundle = getArguments();
String date = bundle.getString("dateAsText");
答案 1 :(得分:2)
我希望它可以帮助你:
public class DatePickerFragment extends DialogFragment
{
private OnDateSetListener onDateSetListener;
public DatePickerFragment() {}
public void setOnDateSetListener(OnDateSetListener onDateSetListener) {
this.onDateSetListener = onDateSetListener;
}
@Override
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(), onDateSetListener, year, month, day);
}
}
答案 2 :(得分:1)
“final Calendar c = Calendar.getInstance();” ,此代码将“c”设置为当前时间,将其修改为您想要的时间。