java - Kotlin Android 基本方法不调用

标签 java android kotlin

我有一个像这样的基本 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/

相关文章:

jvm - 非常神秘的运行时错误: Bad type operand on stack

java - 如何让 Kotlin 停止将参数转换到错误的类(接口(interface))

android - 如何使用 Android Studio 为 newInstance Fragments 创建一个 kotlin live 模板

java - 单击按钮时出现 AnimationDrawable 错误

Android:如何知道通知面板是否已经以编程方式打开?

android - 在 Android 中没有 Intent 的情况下创建一个重复事件提醒直到特定日期?

android - 如何在 Tokbox 中将相机灯设置在手电筒上?

java - 使用java,浏览器在Windows 7中工作,而不是在Windows XP中从GUI打开组件?

java - 不能写字段名,需要一个值

java - onSaveInstanceState 和 onRestoreInstanceState 似乎不起作用