Подтвердить что ты не робот

Как показать DatePickerDialog при нажатии кнопки?

Я разрабатываю приложение, которое требует, чтобы пользователь выбирал дату (дд/мм/гггг). Я хочу показать диалоговое окно с DatePicker при нажатии кнопки. как только дата выбрана, она должна отображаться в EditText.

Я использую Android Studio 2.2, проект с min sdk равен 23.

Пожалуйста, помогите мне сделать необходимый код.

4b9b3361

Ответ 1

Работает следующий код.

datePickerButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            showDialog(0);
        }
    });

@Override
@Deprecated
protected Dialog onCreateDialog(int id) {
    return new DatePickerDialog(this, datePickerListener, year, month, day);
}

private DatePickerDialog.OnDateSetListener datePickerListener = new DatePickerDialog.OnDateSetListener() {
    public void onDateSet(DatePicker view, int selectedYear,
                          int selectedMonth, int selectedDay) {
        day = selectedDay;
        month = selectedMonth;
        year = selectedYear;
        datePickerButton.setText(selectedDay + " / " + (selectedMonth + 1) + " / "
                + selectedYear);
    }
};

Ответ 2

введите описание изображения здесь

я. В вашем build.gradle добавьте последнюю библиотеку appcompat, в то время 24.2.1

dependencies {  
    compile 'com.android.support:appcompat-v7:X.X.X' 
    // where X.X.X version
}

II. Сделайте свою деятельность расширенной android.support.v7.app.AppCompatActivity и реализуйте интерфейс DatePickerDialog.OnDateSetListener.

public class MainActivity extends AppCompatActivity  
    implements DatePickerDialog.OnDateSetListener {

III. Создайте свой DatePickerDialog настройку контекста, реализацию слушателя и начальный год, месяц и день выбора даты.

DatePickerDialog datePickerDialog = new DatePickerDialog(  
    context, MainActivity.this, startYear, starthMonth, startDay);

IV. Покажите свое диалоговое окно на прослушивателе событий нажатия кнопки

((Button) findViewById(R.id.myButton))
    .setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
        datePickerDialog.show();
    }
});

Ответ 3

DatePickerDialog  StartTime = new DatePickerDialog(this, new DatePickerDialog.OnDateSetListener() {
            public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
                Calendar newDate = Calendar.getInstance();
                newDate.set(year, monthOfYear, dayOfMonth);
                activitydate.setText(dateFormatter.format(newDate.getTime()));
            }

        }, newCalendar.get(Calendar.YEAR), newCalendar.get(Calendar.MONTH), newCalendar.get(Calendar.DAY_OF_MONTH));

  btn_checkin.setOnClickListener(new View.OnClickListener() {
                                           @Override
                                           public void onClick(View v) {
     StartTime .show():

 });

Ответ 4

меня устраивает. если вы хотите включить будущее время для выбора, вы должны удалить максимальную дату. Вам нужно поступить следующим образом.

 btnDate.setOnClickListener(new View.OnClickListener() {
                       @Override
                       public void onClick(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) {
                        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);
                        DatePickerDialog dialog = new DatePickerDialog(getActivity(), this, year, month, day);
                        dialog.getDatePicker().setMaxDate(c.getTimeInMillis());
                        return  dialog;
                    }

                    public void onDateSet(DatePicker view, int year, int month, int day) {
                       btnDate.setText(ConverterDate.ConvertDate(year, month + 1, day));
                    }
                }