下面是单击生日edittext时打开日历弹出窗口的代码。它起作用了,问题是当我单击生日编辑文本(例如国家/地区编辑文本)后单击另一个编辑文本时,日历弹出窗口再次打开。为什么会这样呢?
Java类:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_edit);
prepareCalendar();
}
public void prepareCalendar() {
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);
updateLabel();
}
};
findViewById(R.id.birthday).setOnFocuschangelistener(new View.OnFocuschangelistener() {
@Override
public void onFocusChange(View view,boolean hasFocus) {
new DatePickerDialog(Editactivity.this,date,myCalendar
.get(Calendar.YEAR),myCalendar.get(Calendar.MONTH),myCalendar.get(Calendar.DAY_OF_MONTH)).show();
}
});
}
private void updateLabel() {
String myFormat = "dd/MM/yyyy";
SimpleDateFormat dateFormat = new SimpleDateFormat(myFormat,new Locale("pt","BR"));
birthday.setText(dateFormat.format(myCalendar.getTime()));
}
XML:
<TextView
android:id="@+id/birthdayLabel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<EditText
android:id="@+id/birthday"
android:importantForAutofill="no"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:clickable="true"
android:inputType="date"
android:focusable="true"/>
<TextView
android:id="@+id/countryLabel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<EditText
android:id="@+id/country"
android:importantForAutofill="no"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="text"/>