我知道有很多人问这个,但我似乎无法让它发挥作用。 我试图从editTextBirth中获取字符串并将其解析为日期并从中计算用户的年龄,将结果转换为editTextAge(我希望将其保留为EditText,而不是出于个人原因而使用TextView。)
这是我到目前为止所得到的:
public class AddPatientActivity extends AppCompatActivity implements View.OnClickListener{
private static final int DATE_DIALOG_ID = R.layout.birthdaypicker;
private EditText editTextName;
private EditText editTextBirth;
private EditText editTextAge;
private EditText editTextComp;
private SimpleDateFormat dateFormat;
private Calendar c = Calendar.getInstance();
private Calendar now = Calendar.getInstance();
private Button buttonCalc;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_add_patient);
editTextName = (EditText) findViewById(R.id.editTextName);
editTextAge = (EditText) findViewById(R.id.editTextAge);
editTextBirth = (EditText) findViewById(R.id.editTextBirth);
editTextComp = (EditText) findViewById(R.id.editTextComp);
buttonCalc = (Button) findViewById(R.id.buttonCalc);
dateFormat = new SimpleDateFormat("dd/MM/yyyy");
}
@Override
public void onClick(View view) {
//if calc button is pressed
if (view == buttonCalc) {
String date = editTextBirth.getText().toString();
try {
c.setTime(dateFormat.parse(date));
int age = now.get(Calendar.YEAR) - c.get(Calendar.YEAR);
if (now.get(Calendar.DAY_OF_YEAR) < c.get(Calendar.DAY_OF_YEAR)) {
age--;
}
String idade = Integer.toString(age);
editTextAge.setText(idade);
} catch (ParseException e) {
e.printStackTrace();
}
}
}
不幸的是,当我点击buttonCalc或将输入格式从ddMMyyyy(editTextBirth如何显示)更改为dd / MM / yyyy时,没有任何反应。
答案 0 :(得分:2)
您创建了onClick事件,但从未将其明确指定给按钮。
在按钮声明下方添加此代码段:
SUBSTRING(9999...
@Pavneet_Singh也是正确的。您需要比较视图ID而不仅仅是按钮。
这是你的最终洗礼应该是这样的:
buttonCalc.setOnClickListener(this);
}