如何在MVP和Kotlin中保存模型状态?

时间:2018-10-07 02:24:22

标签: kotlin

我已经实现了一个基本的MVP,其中模型具有一组消息,当触摸屏幕时,这些消息以循环方式显示给用户。每条消息都封装在0 name phone telephone phone_1 1 Bob 12364234234 12364234234 36346346311 2 Joe 23534235435 43564564563 34634634623 3 Jill 34573474563 78098080807 34634654622 类中,并传递给State实现。

这是我用来实例化Model和Presenter的Viewer代码(由Viewer创建它们合法吗?),以及用于恢复Model状态的部分:

CircularModel

由于我要保存class MainActivity : AppCompatActivity(), ViewMVC { private lateinit var presenter: Presenter private lateinit var model : Model override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) model = if(savedInstanceState == null ) { CircularModel(LinkedList<State>(Arrays.asList( State("First"), State("Second"), State("Third"), State("Fourth"), State("Fifth") ))) } else { savedInstanceState.getParcelable<Model>("model") } presenter = PresenterImpl(this, model) } // Rest of Viewer's code... } 的状态,因此我将其保存为CirciularModel

@Parcelize

但是,通过这种方式,我收到了@Parcelize class CircularModel constructor(var states: @RawValue Deque<State>?) : Model, Parcelable { ... } Model的类型不匹配警告。但是,如果我声明为Model?,则会收到错误消息,private lateinit var model : Model?不能与可为空的类型一起使用。

我该如何解决?我在模式实现中做错了吗?

1 个答案:

答案 0 :(得分:0)

您不能将lateinitVariable?一起使用。您可以阅读this

中的文档

您可以创建private model:Model? = null,因此模型可以为空。