Domyślnie widok EditText zapisuje swój stan - Wykonuje się to poprzez ustawienie flag w kodzie informującym widok, aby zapisać stan, gdy widok nie jest widoczny lub utracił ostrość. Tekst zostanie automatycznie zapisany i przywrócony po obróceniu urządzenia. Automatyczne zapisywanie stanu widzenia EditText można wyłączyć w pliku XML szablonu poprzez ustawienie androida: własność saveEnabled false:
android:saveEnabled="false"
lub programowo, zadzwoń view.setSaveEnabled(false)
.
saveEnabled określa, czy zapisywanie stanu tego widoku jest włączone (to znaczy, czy zostanie wywołana jego metoda onSaveInstanceState()). Zauważ, że nawet jeśli włączone jest zamrażanie, widok nadal musi mieć przypisany identyfikator (za pomocą setId()), aby jego stan został zapisany. Ta flaga może wyłączyć zapisanie tego widoku; wszelkie widoki podrzędne mogą nadal mieć zapisany stan. Atrybut saveEnabled jest częścią Androida View - View Code. Części tutaj jest związane z kodem:
public boolean isSaveEnabled() {
return (mViewFlags & SAVE_DISABLED_MASK) != SAVE_DISABLED;
}
...
public void setSaveEnabled(boolean enabled) {
setFlags(enabled ? 0 : SAVE_DISABLED, SAVE_DISABLED_MASK);
}
...
void setFlags(int flags, int mask) {
int old = mViewFlags;
mViewFlags = (mViewFlags & ~mask) | (flags & mask);
int changed = mViewFlags^old;
if (changed == 0) {
return;
}
int privateFlags = mPrivateFlags;
/* Check if the FOCUSABLE bit has changed */
if (((changed & FOCUSABLE_MASK) != 0) &&
((privateFlags & HAS_BOUNDS) !=0)) {
if (((old & FOCUSABLE_MASK) == FOCUSABLE)
&& ((privateFlags & FOCUSED) != 0)) {
/* Give up focus if we are no longer focusable */
clearFocus();
} else if (((old & FOCUSABLE_MASK) == NOT_FOCUSABLE)
&& ((privateFlags & FOCUSED) == 0)) {
/*
* Tell the view system that we are now available to take focus
* if no one else already has it.
*/
if (mParent != null) mParent.focusableViewAvailable(this);
}
}
....
czy ustawiasz wartość TextView za pomocą kodu? – Atrix1987
Nie pytam, jak go zachować, ale jak to jest obsługiwane automatycznie przez Androida? –
w rzeczywistości to będzie ... lub próbujesz powiedzieć coś jeszcze?/ – Kiran