美文网首页
Fragment中的TextWatcher引发自动填写空字符串

Fragment中的TextWatcher引发自动填写空字符串

作者: 晓风残月酒醒 | 来源:发表于2019-09-26 13:41 被阅读0次

    在ViewPager + Fragment的架构中,每次在Fragment给EditText设置完成TextWatcher之后,第一次展示没有问题,但是第二次创建这个Fragment的时候,TextWatcher会自动调用afterTextChanged方法并传参空字符串,这个实在是讨厌得很,在网友的指导下也只能勉强避开这个问题,具体解决方案如下:

    textWatcher = new TextWatcher() {
        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {
    
        }
    
        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
    
        }
    
        @Override
        public void afterTextChanged(Editable result) {
            if (isResumed()) {
                // TODO:做你想做的事情
            }
        }
    };
    

    首先在textWatcher. afterTextChanged 里面加上 fragment.isResumed()的判定,这样textWatcher 只有在Fragment准备展示的时候才会起作用,而textWatcher. afterTextChanged自动传递空字符串的操作是在fragment.resume()之前执行的,所以能够避免掉自动传空的问题

    @Override
    public void onDestroyView() {
        if (editText != null) {
            editText.clearFocus();
            if (textWatcher != null) {
                editText.removeTextChangedListener(textWatcher);
                textWatcher = null;
            }
        }
        super.onDestroyView();
    }
    

    其次在fragment. onDestroyView()方法中注销掉textWatcher

    相关文章

      网友评论

          本文标题:Fragment中的TextWatcher引发自动填写空字符串

          本文链接:https://www.haomeiwen.com/subject/vbphyctx.html