Android-即使未调用日历,也会弹出日历

下面是单击生日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"/>
jbs1zgh 回答:Android-即使未调用日历,也会弹出日历

之所以发生这种情况,是因为您已将其添加到setOnFocusChangeListener上,从而为您提供了{strong> hasFocus 。

您可以像这样简单地使用它来解决问题

boolean
本文链接:https://www.f2er.com/3141807.html

大家都在问