Android 正在使用MVP还原演示者中的状态
表示恢复模型中的状态,而不是演示者。如果我有一个非常简单的“模型”,比如说一个二进制开关,可以将textview更新为打开或关闭,该怎么办?创建一个具有单个字符串值的模型切换类似乎有些过分 另一个选项是将bundle从我的活动传递到onSaveInstanceState中我的presenter中的相应方法中,并使用onCreate进行类似的恢复。但文章还说,我们应该避免在演示者中使用android依赖项 最后,我尝试使用Icepick,但不起作用: MainActivity.javaAndroid 正在使用MVP还原演示者中的状态,android,mvp,Android,Mvp,表示恢复模型中的状态,而不是演示者。如果我有一个非常简单的“模型”,比如说一个二进制开关,可以将textview更新为打开或关闭,该怎么办?创建一个具有单个字符串值的模型切换类似乎有些过分 另一个选项是将bundle从我的活动传递到onSaveInstanceState中我的presenter中的相应方法中,并使用onCreate进行类似的恢复。但文章还说,我们应该避免在演示者中使用android依赖项 最后,我尝试使用Icepick,但不起作用: MainActivity.java @Over
@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");
}
}
我有什么选择?如果我必须使用模型方法,我可以为我的案例看一个这样的例子吗?如果您使用注释处理来维护状态,它将不会自动将数据填充到您的演示者中,而没有Icepick.saveInstanceState(this,outState),您不能在演示者中调用它
@状态字符串切换代码>
此行应出现在活动中。在演示者中有一个通过切换请求数据的方法。大概是这样的:
@State String toggle = "off"; //default value
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Icepick.restoreInstanceState(this, savedInstanceState);
(Button) findViewById(R.id.btn).setOnClickListener(this);
presenter.onCreate();
presenter.setState(toggle)
}
您可以将此值作为全局变量存储在presenter中,并相应地决定应用程序流