2012-12-05 12 views
12

मेरे पास EditText के साथ एक टुकड़ा है और onCreateView() के अंदर मैं EditText पर जोड़ता हूं।AfterTextChanged() कॉलबैक को पाठ के बिना वास्तव में बदला जा रहा है

हर बार जब टुकड़ा दूसरी बार 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

टुकड़े स्विच करते समय यह करना बहुत आम बात है। लेनदेन.रेप्लेस (आर.आईडी.container, खंड); लेनदेन.com(); कुछ विशेष नहीं, मैंने झंडा जोड़ने के साथ समस्या हल कर दी है, मैं एक समाधान पोस्ट कर रहा हूं। – meh

उत्तर

35

संपादित समाधान:

ऐसा लगता है के रूप में पाठ दूसरी बार क्योंकि टुकड़ा विचारों के पहले वाली स्थिति बहाल टुकड़ा संलग्न किया गया था से बदल गया था।

मेरे समाधान onResume() में text watcher जोड़ने के बाद से राज्य बहाल कर दी गई से पहले onResume बुलाया गया था।

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

यह समाधान मेरे लिए बहुत अच्छा काम करता है! – GFPF

+0

ग्रेट, यह मेरे लिए तय है! –

+0

धन्यवाद। यह मुझे बिल्कुल पागल कर रहा था। – cohenadair