今天的我特别的高产,已经写了三篇文章了,主要就是乘着空闲把最近遇到的问题都记录下来
老规矩,先上图
如果年龄小于0,则提示错误
xml文件就不贴了,很简单
实现这个功能主要用两个方法,一个是写一个计算周岁的方法,一开始把周岁想简单了,居然直接减年份去了,太愚钝了,,,
还有一个就是日期选择器
先看代码吧
//日期选择
private void dialogDate() {
tv_birthday_set.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
new DatePickerDialog(IndividualActivity.this, new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int monthofYear, int dayOfMonth) {
//显示生日(月份要+1,因为这个方法是从0开始算的)
tv_birthday_set.setText(String.format("%d-%d-%d", year, monthofYear + 1, dayOfMonth));
Calendar cal = Calendar.getInstance();
String strDate = year + "-" + monthofYear + "-" + dayOfMonth;
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date birthDay = null;
try {
birthDay = sdf.parse(strDate);
} catch (ParseException e) {
e.printStackTrace();
}
int birth = countAge(birthDay);
if (birth<0) {
Toast.makeText(getApplicationContext(), "生日输入有误", Toast.LENGTH_SHORT).show();
tv_age_set.setText("");
} else {
tv_age_set.setText(birth + "岁");
}
}
//设置初始的显示日期
}, 2000, 0, 1).show();
}
});
}
这个是比较简单的日期选择器,当点击生日的TextView的时候设置监听,调用日期选择器,将日期显示在TextView上,然后再调用周岁计算方法,通过获取选择的日期计算周岁并返回给年龄的TextView
下面看一下周岁计算方法
扫描二维码关注公众号,回复:
4554160 查看本文章
//根据生日计算年龄
private int countAge(Date birthDay) {
Calendar cal = Calendar.getInstance();
if (cal.before(birthDay)) {
throw new IllegalArgumentException(
"The birthDay is before Now.It's unbelievable!");
}
//获得当前日期
int yearNow = cal.get(Calendar.YEAR);
int monthNow = cal.get(Calendar.MONTH);
int dayOfMonthNow = cal.get(Calendar.DAY_OF_MONTH);
//获得出生日期
cal.setTime(birthDay);
int yearBirth = cal.get(Calendar.YEAR);
int monthBirth = cal.get(Calendar.MONTH) + 1;
int dayOfMonthBirth = cal.get(Calendar.DAY_OF_MONTH);
int age = yearNow - yearBirth;
if (monthNow <= monthBirth) {
if (monthNow == monthBirth) {
if (dayOfMonthNow < dayOfMonthBirth) age--;
} else {
age--;
}
}
return age;
}
然后直接调用一下dialogDate()的方法就行了
因为代码是截取的片段,所以方法的调用可能和我的源代码有点差别,如果有问题可以告诉我。