android - onCreate 在抽象父 Activity 中没有在 kotlin 中调用

标签 android kotlin

我声明了一个 MapActivity 的 child :

class RecordingActivity : MapActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        Log.d("RecirdingActivity", "InitializeMap") //called
    }

    override fun getView(): Int {
        return R.layout.activity_recording
    }
}

我打电话从我的主要 Activity 开始这个 Activity :

fab.setOnClickListener {
            Log.d("MainActivity", "fabClick") //called
            startActivity(intentFor<RecordingActivity>())
        }

我有抽象 Activity :

abstract class MapActivity: AppCompatActivity(), OnMapReadyCallback {

    override fun onCreate(savedInstanceState: Bundle?, persistentState: PersistableBundle?) {
        super.onCreate(savedInstanceState, persistentState)
        setContentView(getView())
        initializeMap()
        Log.d("MapActivity", "InitializeMap")//not called
    }
}

永远不会调用此 Activity 的onCreate方法

我用调试器跟踪它,结果相同。 我做错了什么?

最佳答案

似乎有两种解决方案:

  1. 也许您实际上想在 MapActivity 中覆盖的 onCreate 具有签名 onCreate(android.os.Bundle) :

    abstract class MapActivity: AppCompatActivity(), OnMapReadyCallback {
    
        override fun onCreate(savedInstanceState: Bundle?) {
            super.onCreate(savedInstanceState)
            setContentView(getView())
            initializeMap()
            Log.d("MapActivity", "InitializeMap")
        }
    }
    
  2. onCreate(android.os.Bundle, android.os.PersistableBundle) 的文档MapActivity 中被覆盖的方法表明 AndroidManifest.xml 中 Activity 的 persistableMode 需要设置为 persistAcrossReboots 来调用它...但是 MapActivity 是抽象的,因此您需要为其子类设置属性。在这种情况下,它将是 RecordingActivity

    <?xml version="1.0" encoding="utf-8"?>
    <manifest>
        ...
        <application>
            ...
            <activity
                android:name=".RecordingActivity"
                android:persistableMode="persistAcrossReboots"/>
            ...
        </application>
        ...
    </manifest>
    

关于android - onCreate 在抽象父 Activity 中没有在 kotlin 中调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38174443/

相关文章:

android - 使用自定义 Gson 反序列化器反序列化 JSON 响应时出错

android - 开发中的移动应用程序安全性

android - 在 retrofit 和 rxjava 完成后调用一个函数

android - faSTLane 找不到 com.android.tools.build :gradle:3. 0.1

java - Volley : Kotlin Class call from JavaCode

android - Kotlin 扩展函数 - 如何使其全局化?

android - Android 上的 OpenGL 渐变带

android - 如何在 Android 手机上单击“搜索”按钮启动 Activity

android - android studio 的 Jetpack Compose 查看器中是否有自动刷新?

java - 具有 O(log(N)) 时间复杂度操作的 HashMap