DatePicker 对话当前日期未到达 select

DatePicker Dialogue Current Date Not getting to select

大家好,我是新 Android 开发者。在我的应用程序中,我创建了 DatePickerDialogue.

我的问题是当我 select 除当前日期以外的任何日期时,当前日期无法 select。

我的代码:

public class DatePickerDialogue extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.shared_layout);

    int mYear, mMonth, mDay;
    final Calendar c = Calendar.getInstance();
    mYear = c.get(Calendar.YEAR);
    mMonth = c.get(Calendar.MONTH);
    mDay = c.get(Calendar.DAY_OF_MONTH);

    DatePickerDialog dpd = new DatePickerDialog(DatePickerDialogue.this,
            new DatePickerDialog.OnDateSetListener() {

                @Override
                public void onDateSet(DatePicker view, int year,
                                      int monthOfYear, int dayOfMonth) {

                }

            }, mYear, mMonth, mDay);

    dpd.getDatePicker().setMaxDate(System.currentTimeMillis());
    dpd.show();
}

这样使用

在下面的代码中,我在 TextView 上设置了 OnclickListener,并将 Date 设置为 TextView

   int mYear, mMonth, mDay;

      final Calendar c = Calendar.getInstance();
        mYear = c.get(Calendar.YEAR);
        mMonth = c.get(Calendar.MONTH);
        mDay = c.get(Calendar.DAY_OF_MONTH);

        final TextView textView = (TextView)findViewById(R.id.textview23);
        textView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                DatePickerDialog dpd = new DatePickerDialog(MainActivity.this,
                        new DatePickerDialog.OnDateSetListener() {
                            @Override
                            public void onDateSet(DatePicker view, int year, int month, int day) {
                                c.set(year, month, day);
                                String date = new SimpleDateFormat("MM/dd/yyyy").format(c.getTime());
                                textView.setText(date);

                                mYear = c.get(Calendar.YEAR);
                                mMonth = c.get(Calendar.MONTH);
                                mDay = c.get(Calendar.DAY_OF_MONTH);
                            }
                        }, mYear, mMonth, mDay);
                dpd.getDatePicker().setMaxDate(System.currentTimeMillis());

                Calendar d = Calendar.getInstance();

                dpd.updateDate(d.get(Calendar.YEAR),d.get(Calendar.MONTH),d.get(Calendar.DAY_OF_MONTH));
                dpd.show();


            }

        });

禁用未来日期:

您应该能够在 DatePickerDialog 上调用 getDatePicker()。setMaxDate(long) 以将今天设置为您的最大日期。它将 disable 未来 Date.

更新:

为了重置 Date 每当你想要默认 Date 你必须更新它是默认值。像下面的代码你可以设置它。

dpd.updateDate(d.get(Calendar.YEAR),d.get(Calendar.MONTH),d.get(Calendar.DAY_OF_MONTH));

希望对您有所帮助。

这样试试

   Calendar cal=Calendar.getInstance();
   int year=cal.get(Calendar.YEAR);
    int month=cal.get(Calendar.MONTH);
    int day=cal.get(Calendar.DAY_OF_WEEK);

    DatePickerDialog dp=new DatePickerDialog(this, new DatePickerDialog.OnDateSetListener() {
        @Override
        public void onDateSet(DatePicker datePicker, int i, int i1, int i2) {

        }
    },year,month,day);
dp.getDatePicker().setMaxDate(cal.getTimeInMillis());
 dp.show();