0

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);
    }
}
meWantToLearn
  • 1,691
  • 2
  • 25
  • 45

2 Answers2

1

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);
    }
}
Shamm
  • 1,004
  • 7
  • 9
0

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)

Gak2
  • 2,661
  • 1
  • 16
  • 28