I am develpoing a completely different app and it uses some of the functionality of DatePicker Fragment.
I have an edittext and a button.On click of button i am showing DatePicker and when one of the date is selected ,i am showing that date in edittext.When i again press the DatePicker it shows current date which i dont want.I want it to show the date which is set in EditText.
DatePickerFragment.java
public class DatePickerFragment extends DialogFragment {
private static final String ARGDATE=“mydate”;
private DatePicker datePicker;
public static final String EXTRA_DATE=“extradate”;
@NonNull
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
Date date = (Date) getArguments().getSerializable(ARGDATE);
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
int year = calendar.get(Calendar.YEAR);
int month = calendar.get(Calendar.MONTH);
int day = calendar.get(Calendar.DAY_OF_MONTH);
View view= LayoutInflater.from(getActivity()).inflate(R.layout.dialog_date,null);
AlertDialog builder=new AlertDialog.Builder(getActivity())
.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
int year=datePicker.getYear();
int month=datePicker.getMonth();
int day=datePicker.getDayOfMonth();
Date date=new GregorianCalendar(year,month,day).getTime();
sendDate(Activity.RESULT_OK,date);
}
}).setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
if (dialog != null) {
dialog.dismiss();
}
}
})
.setView(view)
.setTitle(R.string.date_picker_title)
.create();
datePicker = (DatePicker) view.findViewById(R.id.datepicker);
datePicker.init(year, month, day, null);
return builder;
}
public static DatePickerFragment newInstance(Date date){
DatePickerFragment datePickerFragment=new DatePickerFragment();
Bundle bundle=new Bundle();
bundle.putSerializable(ARGDATE,date);
datePickerFragment.setArguments(bundle);
return datePickerFragment;
}
//To send data to CrimeFragment which date you choose in DatePicker
private void sendDate(int resultCode,Date date){
if(getTargetFragment()==null){
return;
}
Intent intent=new Intent();
intent.putExtra(EXTRA_DATE,date);
getTargetFragment().onActivityResult(getTargetRequestCode(),resultCode,intent);
}
}
EditorActivity.java
public class EditorFragment extends Fragment{
private static final String DateDialog = “datedialog”;
private static final int REQUEST_DATE = 0;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view=inflater.inflate(R.layout.fragment_editor,container,false);
DueDate=(EditText)view.findViewById(R.id.duedateedittext);
CalendarImageButton=(ImageButton)view.findViewById(R.id.duedatecalendar);
final Date date=new Date();
String PATTERN = “EEEE,dd-MMMM yyyy”;
SimpleDateFormat dateFormat = new SimpleDateFormat(PATTERN);
final String date1 = dateFormat.format(date.getTime());
DueDate.setText(date1);
CalendarImageButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
FragmentManager fragmentManager = getActivity().getSupportFragmentManager();
//Date date2 = (Date)DueDate.getText();
DatePickerFragment datePickerFragment = DatePickerFragment.newInstance(date);
//To get result from DatePickerFragemnt
datePickerFragment.setTargetFragment(EditorFragment.this, REQUEST_DATE);
datePickerFragment.show(fragmentManager, DateDialog);
}
});
return view;
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == REQUEST_DATE && resultCode == Activity.RESULT_OK) {
Date date = (Date) data
.getSerializableExtra(DatePickerFragment.EXTRA_DATE);
String PATTERN = "EEEE,dd-MMMM yyyy";
SimpleDateFormat dateFormat = new SimpleDateFormat(PATTERN);
String date1 = dateFormat.format(date.getTime());
DueDate.setText(date1);
}
}
I am not using any POJO class so i cant use getDate and setDate