我声明了一个 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方法
我用调试器跟踪它,结果相同。 我做错了什么?
最佳答案
似乎有两种解决方案:
也许您实际上想在
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") } }
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/