我有以下代码
class DrawingActivity : AppCompatActivity() {
private inner class ImageInfoObserver : Observer<ImageInfo> {
override fun onChanged(imageInfo: ImageInfo?) {
// Is there a way to perform DrawingActivity.super.finish() ?
superFinish()
}
}
fun superFinish() {
super.finish()
}
override fun finish() {
...
super.finish()
}
目前,我需要专门创建superFinish()
函数,以便内部类ImageInfoObserver
调用DrawingActivity.super.finish()
我想知道,有没有更简单的方法来实现这一点,而无需创建 superFinish()
?
答案 0 :(得分:1)
您以与访问 DrawingActivity
相同的方式执行此操作 - 但您使用 this@DrawingActivity
代替 super@DrawingActivity
。所以
super@DrawingActivity.finish()
就像从 super.finish()
内部调用 DrawingActivity
。 docs have an example 也是。
您是否有任何理由不想在实际课程中调用 finish()
? (即this@DrawingActivity.finish()
)为什么要跳过DrawingActivity
自己的finish
代码?如果有充分的理由,可能值得在覆盖的 finish()
函数中以某些状态变量为条件制作额外代码。
这样就可以清楚地了解什么时候发生某些事情,什么时候不发生,并且所有的完成拆卸逻辑都在一个地方处理。