1. Salva & Ripristina stato vista in Visualizza (attività/frammento).
io preferisco salvare & ripristinare lo stato di visualizzazione in vista per sé (Attività/frammento)
Quindi la responsabilità di vista per salvare il suo stato (qui aderire al principio di responsabilità singola).
Esempio
/**
* On Save Instance State.
*
* @param outState Out State.
*/
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putString(STATE_KEY_USERNAME, getUserNameFieldValue());
outState.putString(STATE_KEY_PASSWORD, getPasswordFieldValue());
outState.putBoolean(STATE_KEY_REMEMBER_ME, getRememberMeFieldValue());
}
/**
* On Restore Instance State.
*
* @param savedInstanceState Saved Instance State.
*/
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
if (savedInstanceState != null) {
String userName = savedInstanceState.getString(STATE_KEY_USERNAME, "");
String password = savedInstanceState.getString(STATE_KEY_PASSWORD, "");
boolean rememberMe = savedInstanceState.getBoolean(STATE_KEY_REMEMBER_ME, false);
userNameEditText.setText(userName);
passwordEditText.setText(password);
rememberMeCheckBox.setChecked(rememberMe);
}
}
2. Salva & Restore Presentatore Stato Presentatore
Se è necessario salvare ogni stato del presentatore poi farlo in presentatore.
mio presentatore Base sarà presente
/**
* On Create View.
* <p>
* 1. Gets called from view's onCreate method.
*
* @param view View.
* @param savedInstanceState Saved Instance State.
*/
void onCreateView(final View view, final Bundle savedInstanceState);
/**
* On Attach View.
* <p>
* 1. Gets called from view's onStart method.
*/
void onAttachView();
/**
* On Detach View.
* <p>
* 1. Gets called from view's onStop method.
*/
void onDetachView();
/**
* On Save State.
* <p>
* 1. Gets called before view is destroyed to save the state of the presenter.
*
* @param outState Bundle in which to place your saved state.
*/
void onSaveState(final Bundle outState);
/**
* On Destroy View.
* <p>
* 1. Gets called from view's onDestroy method.
*/
void onDestroyView();
Capisco, ma il mio esempio è una forma di creazione. Quindi il mio modello potrebbe essere un post con le categorie. Il problema è che non salverò mai l'oggetto post. L'obiettivo è creare un oggetto post e usarlo per fare una richiesta web. Quindi, immagino che l'unico modo per farlo sia archiviare nella vista e quindi ricreare lo stato della vista. Ho sbagliato? @mmark –
@ FábioCarballo se non frainteso l'obiettivo di MVP, non sarà necessario salvare l'oggetto Post (con "salva" presumo si intenda qualcosa come un db locale o SharedPreferences). Il presentatore + il modello è colui che dovrebbe persistere (in memoria) attraverso le modifiche dello stato della vista – mmark