gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 12:04:36 25 4
gpt4 key购买 nike

我声明了一个 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com