meWantToLearn
meWantToLearn

Reputation: 1700

correct way of getting selected date from datepickdialog which extends fragment

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

Answers (2)

Shamm
Shamm

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

Gak2
Gak2

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

Related Questions