https://medium.com/@cervonefrancesco/model-view-presenter-android-guidelines-94970b430ddf говорит о необходимости восстановления состояния в модели вместо презентатора. Что если у меня есть очень простая «модель», скажем, двоичный переключатель, который обновляет текстовое представление, чтобы включить или выключить? Создание модельного класса Toggle с одним строковым значением выглядит как перебор.
Другой вариант - передать пакет из моей Activity в соответствующий метод в моем презентаторе внутри onSaveInstanceState и восстановить его аналогичным образом с помощью onCreate. Но в статье также говорится, что мы должны избегать зависимости Android от докладчика .
Наконец я попытался использовать Icepick, но это не сработало:
MainActivity.java
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Icepick.restoreInstanceState(this, savedInstanceState);
(Button) findViewById(R.id.btn).setOnClickListener(this);
presenter.onCreate();
}
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
Icepick.saveInstanceState(this, outState);
}
@Override
public void onClick(View view) {
presenter.onButtonClicked();
}
@Override
public void updateState(String state) {
tv.setText(state);
}
MainPresenter.java
public class MainPresenter {
private MainView mainView;
@State String toggle;
@Inject
public MainPresenter(MainView mainView) {
this.mainView = mainView;
}
void onCreate() {
mainView.updateState(toggle);
}
void onButtonClicked() {
mainView.updateState(toggle.equals("on") ? "off" : "on");
}
}
Какие у меня варианты? Если мне придется использовать модельный подход, могу ли я увидеть пример этого для моего случая?