Bom o código que eu tenho aqui pra calcular a idade gera alguns erros, percebi que o código aqui as vezes gera o número de meses negativo.
Código:
DateFormat fmt = new SimpleDateFormat("dd/MM/yyyy");
Date data_nascimento = null;
Date data_atual = null;
try {
data_nascimento = new Date(fmt.parse(ctDataNascimento.getText()).getTime());
data_atual = new Date(fmt.parse(formatarDate.format(data)).getTime());
} catch (ParseException e) {
e.printStackTrace();
}
Calendar cal1 = Calendar.getInstance();
Calendar cal2 = Calendar.getInstance();
cal1.setTime((data_nascimento));
cal2.setTime(data_atual);
int year1 = cal1.get(Calendar.YEAR);
int year2 = cal2.get(Calendar.YEAR);
int month1 = cal1.get(Calendar.MONTH);
int month2 = cal2.get(Calendar.MONTH);
int day1 = cal1.get(Calendar.DAY_OF_MONTH);
int day2 = cal2.get(Calendar.DAY_OF_MONTH);
int meses = month2 - month1;
int idade = year2 - year1;
if ( (month2 < month1) || ( (month2 == month1) && (day2 < day1) ) ) {
idade -= 1;
} else{
}
ctIdade.setText(idade + " anos e " + meses + " meses");
Por exemplo, se eu coloco a data: 02/03/1999 ele está retornando 12 anos e -1 meses.
:S
[]'s

), com algumas adaptações vc pode fazer o seu calculo de idade: