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.
* Jedes Mal, wenn das Fragment zum zweiten Mal hinzugefügt wird * - können Sie etwas Code damit teilen? – Luksprog
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