我有一个像这样的基本 Activity ,它有抽象方法 abc()
abstract class Base: AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?, persistentState: PersistableBundle?) {
super.onCreate(savedInstanceState, persistentState)
Log.i("abc", "onCreate base")
abc()
}
abstract fun abc()
}
MainActiviy 扩展 Base
class MainActivity : Base() {
override fun abc() {
Log.i("abc", "method called from base")
}
@Inject
lateinit var mainPresenter: MainPresenter
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
Log.i("abc", "onCreate")
App.appComponent.plus(MainModule(this)).inject(this)
button.setOnClickListener {
mainPresenter.performToast(editText.text.toString())
}
}
fun showToast(string: String) {
toast(string)
}
}
当我运行 MainActivity 时,日志只显示“onCreate”。这意味着未调用 Base 的 onCreate。你能告诉我为什么不调用基本方法吗? 看起来很傻,但我试过了,但基地没有被调用 相同的代码在 JAVA 中工作
最佳答案
您没有在这两个类中覆盖相同的 onCreate
方法。查看文档,似乎一个或另一个将被调用,具体取决于 persistableMode
是否设置为 persistAcrossReboots
。这意味着无论您在子类中做什么,Base
类中的代码都可能永远不会执行。
关于java - Kotlin Android 基本方法不调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46621063/