2012-12-05 2 views
12

Ich habe ein Fragment mit einem EditText und innerhalb des onCreateView() füge ich ein TextWatcher zum EditText hinzu.afterTextChanged() Callback wird aufgerufen, ohne dass der Text tatsächlich geändert wird

Jedes Mal, wenn das Fragment zum zweiten Mal hinzugefügt wird, wird afterTextChanged(Editable s) Callback aufgerufen, ohne dass der Text jemals geändert wird.

ist hier ein Code-Schnipsel:

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

Ich habe auch das Fragment seinen Zustand zu halten, und ich halte die Instanz des Fragments in der Aktivität.

+0

* Jedes Mal, wenn das Fragment zum zweiten Mal hinzugefügt wird * - können Sie etwas Code damit teilen? – Luksprog

+0

Es ist sehr üblich, wenn Fragmente umgeschaltet werden. transaction.replace (r.id.container, Fragment); transaction.commit(); nichts besonderes, ich habe das Problem mit dem Hinzufügen einer Flagge gelöst, ich werde eine Lösung buchen. – meh

Antwort

35

Edited Lösung:

Wie es der Text scheint von dem zweiten Mal geändert wurde das Fragment gebunden wurde, weil das Fragment des vorherigen Zustand der Ansichten gestellt.

Meine Lösung wurde Zugabe des text watcher im onResume() da der Zustand wiederhergestellt wurde vor die onResume genannt wurde.

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

Diese Lösung hat für mich sehr gut funktioniert! – GFPF

+0

Großartig, das hat es für mich repariert! –

+0

Danke. Das hat mich total verrückt gemacht. – cohenadair

Verwandte Themen