Kotlin Android 基本方法未调用

co*_*ndp 5 java android kotlin

我有一个像这样的基本活动,它具有抽象方法 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()
}
Run Code Online (Sandbox Code Playgroud)

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)
    }
}
Run Code Online (Sandbox Code Playgroud)

当我运行 MainActivity 时,日志只显示“onCreate”。这意味着没有调用来自 Base 的 onCreate。你能告诉我为什么不调用基本方法吗?它看起来很傻,但我尝试过,但基础没有被称为相同的代码在 JAVA 中有效

Kis*_*kae 6

您没有onCreate在这两个类中覆盖相同的方法。查看文档,似乎将根据 ifpersistableMode设置为调用一个或另一个persistAcrossReboots。这意味着Base无论您在子类中做什么,您类中的代码都可能永远不会被执行。