我的活动是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
}
}
Run Code Online (Sandbox Code Playgroud)
我从我的主要活动中调用此活动:
fab.setOnClickListener {
Log.d("MainActivity", "fabClick") //called
startActivity(intentFor<RecordingActivity>())
}
Run Code Online (Sandbox Code Playgroud)
我有抽象的活动:
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
}
}
Run Code Online (Sandbox Code Playgroud)
而本次活动的onCreate方法永远不会被调用
我用调试器跟踪它,我得到了相同的结果.我做错了什么?
似乎有两种解决方案:
也许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")
}
}
Run Code Online (Sandbox Code Playgroud)onCreate(android.os.Bundle, android.os.PersistableBundle)被覆盖的方法的文档MapActivity表明,persistableMode对于AndroidManifest.xml需要设置的活动,persistAcrossReboots要调用它...但是MapActivity是抽象的,因此您需要为其子类设置属性.在这种情况下,这将是RecordingActivity.
<?xml version="1.0" encoding="utf-8"?>
<manifest>
...
<application>
...
<activity
android:name=".RecordingActivity"
android:persistableMode="persistAcrossReboots"/>
...
</application>
...
</manifest>
Run Code Online (Sandbox Code Playgroud)| 归档时间: |
|
| 查看次数: |
1372 次 |
| 最近记录: |