onCreate在抽象的父活动no kotlin中调用
我有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方法从不被调用
我用调试器跟踪它,我有相同的结果。 我做错了什么?
似乎有两个解决方案:
-
也许你实际上想要在
MapActivity
中重写的onCreate(android.os.Bundle)
有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)
方法的文档表明,需要将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>