Android 如果年龄必须在18岁以上,如何实施日历

Android 如果年龄必须在18岁以上,如何实施日历,android,Android,在本例中,我们希望日历仅显示18年以上的出生日期。我使用FromDateText.setError(“年龄必须大于18岁”)来表示用户是否小于18岁 /** private void findViewsById() { fromDateEtxt = (EditText) findViewById(R.id.dobET); fromDateEtxt.setInputType(InputType.TYPE_NULL); fromDateEtxt.requestFocus();

在本例中,我们希望日历仅显示18年以上的出生日期。我使用FromDateText.setError(“年龄必须大于18岁”)来表示用户是否小于18岁

/**
private void findViewsById() {
    fromDateEtxt = (EditText) findViewById(R.id.dobET);
    fromDateEtxt.setInputType(InputType.TYPE_NULL);
    fromDateEtxt.requestFocus();
}

private void setDateTimeField() {
    fromDateEtxt.setOnClickListener(this);
    Calendar newCalendar = Calendar.getInstance();
    fromDatePickerDialog = new DatePickerDialog(this, new DatePickerDialog.OnDateSetListener() {

        public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
            Calendar dob = Calendar.getInstance();
            dob.set(year, monthOfYear, dayOfMonth);
            fromDateEtxt.setText(dateFormatter.format(dob.getTime()));

            Calendar today = Calendar.getInstance();
            dob.set(year, monthOfYear, dayOfMonth);
            int age = today.get(Calendar.YEAR) - dob.get(Calendar.YEAR);
            Integer ageInt = new Integer(age);
            String ageS = ageInt.toString();
            if(age >= 18) {
                fromDateEtxt.setText(dateFormatter.format(dob.getTime()));
                fromDateEtxt.setError(null);
            }
            else {
                fromDateEtxt.setText("");
                fromDateEtxt.setError("Age must be above 18 years.");
            }
        }

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

}
*方法从输入的出生日期中提取用户的年龄。 * *@param DoB String用户的出生日期。 * *@return ageS字符串根据提供的DoB以年为单位的用户年龄。 */ 私有字符串获取(整数年、整数月、整数天){ Calendar dob=Calendar.getInstance(); Calendar today=Calendar.getInstance(); 设定日期(年、月、日); int age=today.get(Calendar.YEAR)-dob.get(Calendar.YEAR); 如果(今天获取(日历年中的日期)
您可以使用setMaxDate()限制用户

dob.get(日历日/月日);
}

查看此链接,先生,我使用了此代码,但当我单击编辑文本时,它会一直显示到2017年,但当我关闭并重新打开它时,它会正常工作。您可以发布您已实施的内容吗?我正在尝试发布我已实施的内容,但太长,无法在此处发布。但是我正在发送其中的一部分。private void setDateTimeField(){fromDateText.setOnClickListener(this);dateFormatter=new SimpleDateFormat(“dd-MM-yyyy”,Locale.US);dob=Calendar.getInstance();fromDatePickerDialog=new-DatePickerDialog(this,new-DatePickerDialog.OnDateSetListener()){public void onDateSet(DatePicker视图,int year,int monthOfYear,int dayOfMonth){dob.add(Calendar.year,-18);fromDatePickerDialog.getDatePicker().setMaxDate(dob.getTime().getTime());dob.set(year,monthOfYear,dayOfMonth);fromDateText.setText(dateFormatter.format(dob.getTime());dob.set(year,monthOfYear,dayOfMonth);fromDateText.setText(dateFormatter.format(dob.getTime());},dob.get(Calendar.year),dob.get(Calendar.MONTH),dob.get(Calendar.DAY,OF the mount));}
/**
 * Method to extract the user's age from the entered Date of Birth.
 * 
 * @param DoB String The user's date of birth.
 * 
 * @return ageS String The user's age in years based on the supplied DoB.
 */

    private String getAge(int year, int month, int day){
        Calendar dob = Calendar.getInstance();
        Calendar today = Calendar.getInstance();

        dob.set(year, month, day); 

        int age = today.get(Calendar.YEAR) - dob.get(Calendar.YEAR);

        if (today.get(Calendar.DAY_OF_YEAR) < dob.get(Calendar.DAY_OF_YEAR)){
            age--; 
        }

        Integer ageInt = new Integer(age);
        String ageS = ageInt.toString();

        return ageS;  
    }
Calendar cal = Calendar.getInstance();
cal.add(Calendar.YEAR, -18);
DatePickerDialog dpd = new DatePickerDialog(this, null, cal.get(Calendar.YEAR), cal.get(Calendar.MONTH), cal.get(Calendar.DAY_OF_MONTH));
dpd.getDatePicker().setMaxDate(cal.getTime().getTime());
dpd.show();
private void setDateTimeField() {
    fromDateEtxt.setOnClickListener(this);
    dob = Calendar.getInstance();
    fromDatePickerDialog = new DatePickerDialog(this,   new 
DatePickerDialog.OnDateSetListener() {
        public void onDateSet(DatePicker view, int year, int monthOfYear, 
int dayOfMonth) {

            dob.add(Calendar.YEAR, -18);

fromDatePickerDialog.getDatePicker().setMaxDate(dob.getTime().getTime());
            dob.set(year, monthOfYear, dayOfMonth);
            fromDateEtxt.setText(dateFormatter.format(dob.getTime()));
            dob.set(year, monthOfYear, dayOfMonth);
                fromDateEtxt.setText(dateFormatter.format(dob.getTime()));
        }
    }, dob.get(Calendar.YEAR), dob.get(Calendar.MONTH),