我已经实现了一个基本的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?
不能与可为空的类型一起使用。
我该如何解决?我在模式实现中做错了吗?
答案 0 :(得分:0)
您不能将lateinit
与Variable?
一起使用。您可以阅读this
您可以创建private model:Model? = null
,因此模型可以为空。