我正在尝试为活动创建一个生成器。原因是这个活动可以以多种不同的方式开始。我创建了一个这样的 Builder 类:
class ActivityBuilder {
private var showToolBar = false
private var postExecutable: (() -> Unit)? = null
fun showToolbar(boolean: Boolean) : ActivityBuilder {
this.showToolBar = boolean
return this
}
fun setPostExecutable(function: () -> Unit) : ActivityBuilder {
this.postExecute = function
return this
}
fun start(context: Context){
val intent = Intent(context, Activity::class.java)
context.startActivity(intent)
}
}
这个想法是调用这样的东西并可以访问活动内部的这些字段。
ActivityBuilder().showToolbar(false).setPostExecutable { { doSomething() } }.start(this)
我想我也可以使用一个伴生对象,这将达到同样的目的。
companion object Builder {
private var showToolBar = false
private var postExecute: (() -> Unit)? = null
fun showToolbar(boolean: Boolean) : Builder {
this.showToolBar = boolean
return this
}
fun setPostExecutable(function: () -> Unit) : Builder {
this.postExecute = function
return this
}
fun start(context: Context){
val intent = Intent(context, AuthActivity::class.java)
context.startActivity(intent)
}
}
问题主要来自“postExecutable”字段。我需要在某个点调用该函数,但它不可打包,因此在启动活动时我无法通过意图传递它。
如果有人有解决方案,我将不胜感激!