Reputation: 1700
I am following the android tutorials on DatePickerDialog. I am able to display the datepickerdialog and set the selected date. The way I a msetting the selected date, is by creating a static instance of the EditTextview and accessing it from the DatePickerFragment class. Is this the right way to set the selected date?
public class NewAssignment extends FragmentActivity {
public static EditText textViewDatePicker; //static
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.new_assignment);
textViewDatePicker= (EditText) findViewById(R.id.datePicker);
}
public void showDatePickerDialog(View v) {
DialogFragment newFragment = new DatePickerFragment();
newFragment.show(getSupportFragmentManager(), "datePicker");
}
public static class DatePickerFragment extends DialogFragment implements
DatePickerDialog.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(), this, year, month, day);
}
public void onDateSet(DatePicker view, int year, int month, int day) {
// Do something with the date chosen by the user
NewAssignment.textViewDatePicker.setText("year: "+year+ "month: "+month+ "day: "+day);
}
}
Upvotes: 0
Views: 409
Reputation: 1004
Actually, you can create and show DatePickerDialog in your NewAssignment Activity. DataPickerFragment is redurant in this case. Also you can assign OnDateSetListener to your Activity. It can be like this:
public class NewAssignment extends FragmentActivity implements
DatePickerDialog.OnDateSetListener {
private EditText textViewDatePicker;
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textViewDatePicker = (EditText) findViewById(R.id.angle_value);
showDatePickerDialog();
}
public void showDatePickerDialog() {
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
DatePickerDialog datePickerDialog = new DatePickerDialog(this, this, year, month, day);
datePickerDialog.show();
}
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
textViewDatePicker.setText("year: " + year + "month: " + monthOfYear + "day: " + dayOfMonth);
}
}
Upvotes: 1
Reputation: 2701
You should be able to use getActivity().findViewById(R.id.datePicker) to get your edit text in your fragment.
Or you can override onAttach(activity) in DatePickerFragment, then set an EditText field to activity.findViewById(R.id.datePicker)
Upvotes: 0