0

所以问题是,当我将焦点从一个 EditText 更改为另一个时,我为所选的一个敬酒,但我不仅仅是所选 EditText 的一个 Toast,我得到了先前选择的一个,然后我得到了所选的结果。我不知道如何使用 TextWatcher 这是代码示例:

heure.setOnFocusChangeListener(new OnFocusChangeListener() {



            @Override
            public void onFocusChange(View arg0, boolean arg1) {
                datee.removeTextChangedListener(yourTextWatcher);
                Toast.makeText(RendezVousActivity.this,"heure", 5000).show();


            }
        });


        datee.setOnFocusChangeListener(new OnFocusChangeListener() {

            @Override
            public void onFocusChange(View v, boolean hasFocus) {
                heure.removeTextChangedListener(yourTextWatcher);
                Toast.makeText(RendezVousActivity.this,"Date", 5000).show();

            }
        });
4

1 回答 1

1

OnFocusChanged 被调用两次:一次是在 EditText 获得焦点时,一次是在失去焦点时。

因此,当您单击 EditText 时,它会祝酒。然后,当您单击另一个 EditText 时,第一个失去焦点,再次显示第一个 toast,然后第二个获得焦点,显示您的第二个 toast。

如果您只想在选择 toast 时显示它,请尝试使用:

heure.setOnFocusChangeListener(new OnFocusChangeListener() {
    @Override
    public void onFocusChange(View arg0, boolean arg1) {
        datee.removeTextChangedListener(yourTextWatcher);
        if(v.isFocused()) {
            Toast.makeText(RendezVousActivity.this,"heure", 5000).show();
        }
    }
});

datee.setOnFocusChangeListener(new OnFocusChangeListener() {
    @Override
    public void onFocusChange(View v, boolean hasFocus) {
        heure.removeTextChangedListener(yourTextWatcher);
        if(v.isFocused()) {
            Toast.makeText(RendezVousActivity.this,"Date", 5000).show();
        }
    }
});
于 2013-04-21T04:22:56.033 回答