如何从edittext android中设置Datepicker对话框中的日期?
问题描述:
我有一个datepicker
对话框,它放入一个edittext
来设置生日..设置日期之后的对话框返回当前日期..我需要的是在选择它之后显示我选择到datepicker
对话框的日期吗?如何从edittext android中设置Datepicker对话框中的日期?
的Datepicker
对话框类:
public class DatePickerDialog2 extends DialogFragment{
public static final String ARG_DEFAULT = "default";
private DatePicker datePicker;
private String defaultDate;
private DatePickerDialog.OnDateSetListener onDateListener;
public DatePickerDialog2() {
try {
OnDatePickerDoneButtonClickedListener act = (OnDatePickerDoneButtonClickedListener) getActivity();
} catch (ClassCastException e) {
throw new ClassCastException("Must implement OnDatePickerDoneButtonClickedListener");
}
}
public interface OnDatePickerDoneButtonClickedListener {
void OnDatePickerDoneButtonClicked(String date);
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
defaultDate = getArguments().getString(ARG_DEFAULT);
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
Calendar calendar = Calendar.getInstance();
if (TextUtils.isEmpty(defaultDate)) {
DateFormat df = new SimpleDateFormat("dd/MMM/yyyy");;
try {
calendar.setTime(df.parse(new Date().toString()));
Log.d("first", defaultDate + " -");
} catch (ParseException e) {
e.printStackTrace();
}
} else {
try {
DateFormat df = new SimpleDateFormat("dd/MMM/yyyy");
calendar.setTime(df.parse(defaultDate));
Log.d("second", defaultDate + " -");
} catch (ParseException e1) {
Log.d("third",defaultDate+" -");
}
}
datePicker = new DatePicker(getActivity());
datePicker.setCalendarViewShown(false);
datePicker.setMaxDate(new Date().getTime()-1 * 24 * 3600 * 1000);
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
// String date =datePicker.getYear()+ "-"+ datePicker.getDayOfMonth() + "-" + (datePicker.getMonth() + 1) ;
int day = datePicker.getDayOfMonth();
int month = datePicker.getMonth();
int year = datePicker.getYear();
final Calendar calendar = Calendar.getInstance();
calendar.set(year, month, day);
SimpleDateFormat sdf = new SimpleDateFormat("dd/MMM/yyyy");
String date = sdf.format(calendar.getTime());
OnDatePickerDoneButtonClickedListener act = (OnDatePickerDoneButtonClickedListener) getActivity();
act.OnDatePickerDoneButtonClicked(date);
dismiss();
}
})
.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dismiss();
}
})
//.setTitle("Select date")
.setView(datePicker);
// Create the AlertDialog object and return it
return builder.create();
}
}
的edittext
我称之为对话框打开日期选择器:
birthday.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
DatePickerDialog2 dialog = new DatePickerDialog2();
Bundle bundle = new Bundle();
bundle.putString("dateAsText", birthday.getText().toString());
dialog.setArguments(bundle);
dialog.show(getSupportFragmentManager(), "date_picker_frag");
}
});
答
第一工具DatePickerDialog.OnDateSetListener在DatePickerDialog2类,然后重写onDateSet方法在你的DatePickerDialog2类
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
String selDate = year + "-" + String.format("%02d", (monthOfYear+1)) + "-" + String.format("%02d", dayOfMonth);
Intent i = new Intent();
i.putExtra("selectedDate",selDate);
getTargetFragment().onActivityResult(getTargetRequestCode(), Activity.RESULT_OK, i);
}
然后在活动类
mEtDate.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
DialogFragment picker = new DatePickerFragment();
picker.setTargetFragment(OverviewFragment.this, ID_DATEPICKER_FRAGMENT);
picker.show(getFragmentManager().beginTransaction(), "datePicker");
}
});
然后覆盖方法onActivityResult
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if((resultCode == Activity.RESULT_OK)){
Bundle bundle=data.getExtras();
String resultDate = bundle.getString("selectedDate","");
mEtDate.setText(resultDate);
}
}
答
试试这个
private Calendar cal;
private int day;
private int month;
private int year;
EditText et;
cal = Calendar.getInstance();
day = cal.get(Calendar.DAY_OF_MONTH);
month = cal.get(Calendar.MONTH);
year = cal.get(Calendar.YEAR);
et = (EditText) findViewById(R.id.editText);
et.setInputType(0);
et.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
hideSoftKeyboard(RegisterActivity.this);
android.support.v4.app.DialogFragment newFragment = new SelectDateFragment();
newFragment.show(getSupportFragmentManager(), "DatePicker");
}
});
public static class SelectDateFragment extends android.support.v4.app.DialogFragment implements DatePickerDialog.OnDateSetListener {
@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);
}
public void onDateSet(DatePicker view, int yy, int mm, int dd) {
populateSetDate(yy, mm + 1, dd);
}
public String populateSetDate(int year, int month, int day) {
et.setText(month + "/" + day + "/" + year);
return (month + "/" + day + "/" + year);
}
}
+0
clicklistener和日期选择器不在同一个类中的代码是什么 –
,它告诉我解决不了你的EditText上写代码? –
有没有活动课? – sajan
点击监听器 –