分离片段时EditText onFocusChangeListener错误

时间:2018-08-20 11:06:58

标签: android android-fragments kotlin android-edittext

背景

大家好,我有一个名为checkEmailAvailability的函数,当焦点不在HTTP时发送EmailEditText请求(基本上,我想在用户完成操作后向checkEmailAvailability发送请求)键入)。

基于函数的结果,我显示或隐藏了名为errorTextView的错误textView。

问题

我正在使用以下方法来处理焦点更改并检查电子邮件的可用性。

EmailEditText.setOnFocusChangeListener { view, hasFocus ->
            if (!hasFocus){
                checkEmailAvailability()
            }else{
                canRegisterEmail = false
                emailAvailabilityCheckDone = false
            }
        }

一切正常,除非当焦点放在EmailEditText上并且我转到另一个fragment时,再次调用checkEmailAvailability(),因为我已经不在{{1} },而该函数尝试隐藏/显示fragment,则应用崩溃并显示错误:

errorTextView

当片段将要关闭时,我怎么能停止检查onFocusChange呢?或者您建议如何防止此崩溃?

2 个答案:

答案 0 :(得分:0)

请尝试此解决方案

声明此变量

  private var isFragment_visible: Boolean = false;

然后在onCreateView()

 isFragment_visible=true

onDestroyView()

 isFragment_visible=false

现在使用此变量

EmailEditText.setOnFocusChangeListener { view, hasFocus ->
            if (!hasFocus&&isFragment_visible){
                checkEmailAvailability()
            }else{
                canRegisterEmail = false
                emailAvailabilityCheckDone = false
            }
        }

答案 1 :(得分:0)

尝试在onViewCreated中编写侦听器,并以view.editText的身份访问editText