背景
大家好,我有一个名为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呢?或者您建议如何防止此崩溃?
答案 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