2012-12-05 9 views
12

Ho un frammento con uno EditText e all'interno dello Aggiungo uno TextWatcher allo EditText.afterTextChanged() chiamata in corso senza che il testo sia effettivamente modificato

Ogni volta che il frammento viene aggiunto per la seconda volta afterTextChanged(Editable s) viene richiamato senza che il testo venga mai modificato.

Ecco un frammento di codice:

@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"); 
    } 
} 

Ho anche impostare il frammento di mantenere il suo stato, e mantenere l'istanza del frammento nell'attività.

+0

* Ogni volta che si aggiunge il frammento per la seconda volta * - è possibile condividere del codice correlato a questo? – Luksprog

+0

È una cosa molto comune da fare quando si cambiano i frammenti. transaction.replace (r.id.container, fragment); transaction.commit(); niente di speciale, ho risolto il problema con l'aggiunta di una bandiera che pubblicherò una soluzione. – meh

risposta

35

soluzione Modificato:

quanto pare il testo è stato modificato dalla seconda volta il frammento è stato attaccato perché il frammento ripristinato lo stato precedente delle viste.

La mia soluzione è stata aggiunta la text watcher nel onResume() da quando lo stato è stato restaurato prima il onResume è stato chiamato.

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

Questa soluzione ha funzionato molto bene per me! – GFPF

+0

Fantastico, è stato risolto per me! –

+0

Grazie. Questo mi stava facendo impazzire. – cohenadair

Problemi correlati