在我的应用程序中,我有两个编辑文本,我希望在单击打开的这两个编辑文本日期选择器对话框时在编辑文本中设置两个值。
final DatePickerDialog.OnDateSetListener date = new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear,
int dayOfMonth) {
// TODO Auto-generated method stub
myCalendar.set(Calendar.YEAR, year);
myCalendar.set(Calendar.MONTH, monthOfYear);
myCalendar.set(Calendar.DAY_OF_MONTH, dayOfMonth);
updateDOB();
updateDOA();
}
};
doa.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
new DatePickerDialog(FamilyEditActivity.this, date, myCalendar
.get(Calendar.YEAR), myCalendar.get(Calendar.MONTH),
myCalendar.get(Calendar.DAY_OF_MONTH)).show();
}
});
spoucedob.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
new DatePickerDialog(FamilyEditActivity.this, date, myCalendar
.get(Calendar.YEAR), myCalendar.get(Calendar.MONTH),
myCalendar.get(Calendar.DAY_OF_MONTH)).show();
}
});
}
private void updateDOA() {
String myFormat = "yyyy-MM-dd";
SimpleDateFormat sdf = new SimpleDateFormat(myFormat, Locale.US);
doa.setText(sdf.format(myCalendar.getTime()));
}
private void updateDOB() {
String myFormat = "yyyy-MM-dd";
SimpleDateFormat sdf = new SimpleDateFormat(myFormat, Locale.US);
spoucedob.setText(sdf.format(myCalendar.getTime()));
}
这是我的代码。当我在一个编辑文本中设置日期时,它会同时更改其他编辑文本的值。请告诉我问题出在哪里... 谢谢。
最佳答案
在类级别声明一个变量:
EditText clickedEditText;
并在点击监听器中将其设置为点击的 EditText:
doa.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
clickedEditText = (EditText) view;
new DatePickerDialog(FamilyEditActivity.this, date, myCalendar
.get(Calendar.YEAR), myCalendar.get(Calendar.MONTH),
myCalendar.get(Calendar.DAY_OF_MONTH)).show();
}
});
spoucedob.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
clickedEditText = (EditText) view;
new DatePickerDialog(FamilyEditActivity.this, date, myCalendar
.get(Calendar.YEAR), myCalendar.get(Calendar.MONTH),
myCalendar.get(Calendar.DAY_OF_MONTH)).show();
}
});
现在你只需要一种方法update()
:
private void update() {
String myFormat = "yyyy-MM-dd";
SimpleDateFormat sdf = new SimpleDateFormat(myFormat, Locale.US);
clickedEditText.setText(sdf.format(myCalendar.getTime()));
}
在 onDateSet()
中:
final DatePickerDialog.OnDateSetListener date = new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
myCalendar.set(Calendar.YEAR, year);
myCalendar.set(Calendar.MONTH, monthOfYear);
myCalendar.set(Calendar.DAY_OF_MONTH, dayOfMonth);
update();
}
};
关于java - 同一 Activity 中 Edittext 的多个日期选择器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53724279/