Class Activity 中的日期选择器

Datepicker in Class Activity

我在 activity ApplyLeave 中使用了以下代码。我想选择日期并将日期、月份和年份保存到 public int 变量。

            final Calendar calendar = Calendar.getInstance();
            DatePickerDialog dialog = new DatePickerDialog(ApplyLeave.this, new DatePickerDialog.OnDateSetListener() {
                @Override
                public void onDateSet(DatePicker arg0, int year, int month, int day_of_month) {
                    calendar.set(Calendar.YEAR, year);
                    calendar.set(Calendar.MONTH, (month)); //add +1 for next month calendar
                    calendar.set(Calendar.DAY_OF_MONTH, day_of_month);
                    String myFormat = "dd/MM/yyyy";
                    SimpleDateFormat sdf = new SimpleDateFormat(myFormat, Locale.getDefault());
                    dtTmp = sdf.format(calendar.getTime());

                }
            },calendar.get(Calendar.YEAR),calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH));
            dialog.getDatePicker().setMinDate(calendar.getTimeInMillis());//used to hide previous date,month and year
            calendar.add(Calendar.YEAR, 0);
            //dialog.getDatePicker().setMaxDate(calendar.getTimeInMillis());//used to hide future date,month and year
            dialog.show();
            String[] selTmp = dtTmp.split("/");

            selBdate = Integer.parseInt(selTmp[0]);
            selBmonth = Integer.parseInt(selTmp[1]);
            selByear = Integer.parseInt(selTmp[2]);
            stDt = MyUtility.getJulianDay(selByear, selBmonth, selBdate, ApplyLeave.this);
            eBegin.setText(dtTmp);

我收到错误

java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String[] java.lang.String.split(java.lang.String)' on a null object reference at Line "String[] selTmp = dtTmp.split("/");

如果我评论这一行和以下三行,日期会被选中,但需要点击两次才能设置正确的日期。

日期选择器代码取自Answer by @Sunil

试试这个对我有用

     final Calendar c = Calendar.getInstance();
                    int mYear = c.get(Calendar.YEAR);
                    int mMonth = c.get(Calendar.MONTH);
                    int mDay = c.get(Calendar.DAY_OF_MONTH);
                    
                    DatePickerDialog datePickerDialog = new DatePickerDialog(Activity_five.this,
                            new DatePickerDialog.OnDateSetListener() {
    
                                @Override
                                public void onDateSet(DatePicker view, int year,
                                                      int monthOfYear, int dayOfMonth) {
    
                                    Date date = new Date(year, monthOfYear, dayOfMonth);
    
                                    Calendar calendar = Calendar.getInstance();
                                    calendar.set(year, monthOfYear, dayOfMonth);
                                    @SuppressLint("SimpleDateFormat")
                                    SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");
                                    // String cdate = formatter.format(date);
                                    String strDate = formatter.format(calendar.getTime());
    
                                     
                                }
                            }, mYear, mMonth, mDay);
                    
//for set max value in date
datePickerDialog.getDatePicker().setMaxDate(System.currentTimeMillis());
                    datePickerDialog.show();

试试这个:

public class MainActivity extends AppCompatActivity implements DatePickerDialog.OnDateSetListener{
        TextView textView;
        Button txt_open_date_picker;
        int yy,mm,dd;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            textView = findViewById(R.id.text);
            txt_open_date_picker = (Button) findViewById(R.id.txt_open_date_picker);
    
            txt_open_date_picker.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    DatePickerDialog datePickerDialog = new DatePickerDialog(
                            MainActivity.this,
                            MainActivity.this,
                            Calendar.getInstance().get(Calendar.YEAR),
                            Calendar.getInstance().get(Calendar.MONTH),
                            Calendar.getInstance().get(Calendar.DAY_OF_MONTH));
    
                    datePickerDialog.show();
                }
            });
    
        }
    
        @Override
        public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) {
            String date = dayOfMonth + "/" + month + "/" + year;
            textView.setText(date);
        }
    }