我需要知道何时最终设置我的对象(从Internet获取数据),以便我可以正确使用它而没有任何nullpointerexception。有没有一种方法可以让对象在设置完后通知,就像onComplete lambdas作为函数参数一样。简单的问题,但有帮助:)
答案 0 :(得分:3)
您可以在类中创建函数类型变量。在您的活动中设置功能。准备好对象后调用它。
class MyObject()
{
var onComplete : (()-> Unit)? = null
fun setup()
{
//setup your object
onComplete?.invoke()
}
}
您的活动
val myObject = MyObject()
myObject.onComplete = {
//..things to do after setup...
}
myObject.setup()
如果需要,还可以将其放在构造函数中。
答案 1 :(得分:0)
在android中,如果您添加了支持库依赖项,我们可以使用LiveData
。
class Result
object MyObject {
val onComplete: MutableLiveData<Result> = MutableLiveData()
fun setUp() {
// do something
onComplete.setValue(Result()) // main thread
// onComplete.postValue(Result()) // other thread
}
}
class SampleActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
MyObject.onComplete.observe(this, Observer { result ->
// do something with result
})
MyObject.setUp()
}
}
如果此方法不熟悉,请查看观察者模式或LiveData。