Fragmente salvar automaticamente e restaurar o estado de EditTexts
Eu tenho um fragmento que parece estar restaurando automaticamente o estado através de uma alteração na configuração de rotação da tela. Posso verificar nos logs que onCreatView é chamado no fragmento sempre que a tela é girada. Apesar de chamar para applyDefaults (), as entradas de rascunho feitas pelo usuário são mantidas quando a tela gira e onCreateView () é chamado.
Meu entendimento é que eu precisaria salvar o estado em onSaveInstanceState () e restaurá-lo em onCreateView (), mas esse não parece ser o caso. Alguém pode explicar?
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
Log.d(TAG, "onCreateView()");
View view = inflater.inflate(R.layout.fragment_email_entry, container, false);
m_hostNameEditText = (EditText) view.findViewById(R.id.hostNameEditText);
// set reference for other fields
applyDefaultsForNewEmailAccount();
return view;
}
private void applyDefaults() {
m_hostNameEditText.setText("");
// set other defaults
}
Pode ter a ver com o fato de que minha Atividade herda de SingleFragmentActivity, portanto, talvez ele veja que o fragmento já está na exibição. Ainda assim, sabemos que Fragment.onCreateView () está sendo chamado.
public abstract class SingleFragmentActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.single_fragment_activity);
FragmentManager fragmentManager = getFragmentManager();
Fragment fragment = fragmentManager.findFragmentById(R.id.single_frame_container);
if (fragment == null) {
fragment = createFragment();
fragmentManager.beginTransaction()
.add(R.id.single_frame_container, fragment)
.commit();
}
}
public abstract Fragment createFragment();
}