2012-12-05 54 views
12

我有一個片段EditTextonCreateView()裏面我添加TextWatcherEditTextafterTextChanged()回調被調用時沒有實際改變文本

每次片段被第二次添加時afterTextChanged(Editable s)回調正在被調用,而不會改變文本。

下面的代碼片段:

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
... 
    myEditText = (EditText) v.findViewById(R.id.edit_text); 
    myEditText.addTextChangedListener(textWatcher); 
... 
} 

TextWatcher textWatcher = new TextWatcher() { 

    @Override 
    public void onTextChanged(CharSequence s, int start, int before, int count) { 
     searchProgressBar.setVisibility(View.INVISIBLE); 
    } 

    @Override 
    public void beforeTextChanged(CharSequence s, int start, int count, int after) { 

    } 

    @Override 
    public void afterTextChanged(Editable s) { 
     Log.d(TAG, "after text changed"); 
    } 
} 

我還設置了片段保留其狀態,我把片段的實例在活動。

+0

*每次片段被第二次添加* - 你能分享一些與此相關的代碼嗎? – Luksprog

+0

切換片段時,這是很常見的事情。 transaction.replace(r.id.container,fragment);transaction.commit(); 沒什麼特別的,我已經解決了添加標誌的問題,我將發佈解決方案。 – meh

回答

35

被修改溶液:

,因爲它似乎文本從片段連接,因爲該片段恢復的觀點先前狀態的第二時間改變。

我的解決辦法是在onResume()加入text watcher因爲狀態已恢復以前onResume被調用。

@Override 
public void onResume() { 
    super.onResume(); 
    myEditText.addTextChangedListener(textWatcher); 
} 
+0

這個解決方案非常適合我! – GFPF

+0

太棒了,它爲我修好了! –

+0

謝謝。這讓我非常瘋狂。 – cohenadair

相關問題