android – OnFocusChange并不总是有效

在我的一个活动中,我有三个EditTexts和一个OK按钮. OnFocuschangelistener设置为所有三个EditTexts.每次焦点丢失时,听众都应该触发.

在EditTexts之间切换非常有效.但是,如果用户按下OK按钮,则在按下按钮之前没有针对用户聚焦的EditText触发的焦点改变(失去焦点).

我的代码出了什么问题?

private class MyOnFocuschangelistener implements OnFocuschangelistener {
    private EditText editText;

    public MyOnFocuschangelistener(final EditText editText) {
        super();

        this.editText = editText;
    }

    @Override
    public void onFocusChange(final View view,final boolean isFocused) {
        if (!isFocused) {
            if (editText == editText1) {
                // Do a calculation
            } else if (editText == editText2) {
                // Do another calculation
            } else if (editText == editText3) {
                // Do a different calculation
            }
        }
    }
}

@Override
public void onCreate(final Bundle bundle) {
    // ...
    editText1.setonFocuschangelistener(new MyOnFocuschangelistener(editText1));
    editText2.setonFocuschangelistener(new MyOnFocuschangelistener(editText2));
    editText3.setonFocuschangelistener(new MyOnFocuschangelistener(editText3));
    // ...
}

解决方法

用户点击OK或其他按钮时,您可以尝试清除焦点….

例如

builder.setPositiveButton(android.R.string.ok,new DialogInterface.OnClickListener() 
 {
     public void onClick(DialogInterface dialog,int whichButton) 
     {
          editText1.clearfocus();
          editText2.clearfocus();
          editText3.clearfocus();
          ....
     }
 }

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...