我的活动是MapActivity的孩子。
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
}
}
我从我的主要活动中调用此活动:
fab.setOnClickListener {
Log.d("MainActivity", "fabClick") //called
startActivity(intentFor<RecordingActivity>())
}
我有抽象活动:
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
}
}
永远不会调用和 onCreate方法
我用调试器跟踪它,我得到了相同的结果。 我做错了什么?
答案 0 :(得分:8)
似乎有两种解决方案:
您onCreate
中实际想要覆盖的MapActivity
可能是签名onCreate(android.os.Bundle)
:
abstract class MapActivity: AppCompatActivity(), OnMapReadyCallback {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(getView())
initializeMap()
Log.d("MapActivity", "InitializeMap")
}
}
MapActivity
中正在覆盖的onCreate(android.os.Bundle, android.os.PersistableBundle)
方法的文档表明,persistableMode
中的AndroidManifest.xml
活动需要设置为persistAcrossReboots
1}}它被称为...但是MapActivity
是抽象的,所以你需要为它的子类设置属性。在这种情况下,这将是RecordingActivity
。
<?xml version="1.0" encoding="utf-8"?>
<manifest>
...
<application>
...
<activity
android:name=".RecordingActivity"
android:persistableMode="persistAcrossReboots"/>
...
</application>
...
</manifest>