如何解决如何将数据从onCreate传递给onSaveInstanceState?
我的主活动中有一个onCreate()函数和一个onSaveInstanceState()函数。我已经在onCreate()中声明了一个Map,并且想要在onSaveInstanceState()函数中访问该Map的键,以便将它们保存到outState包中。
class MainActivity: AppCombatActivity(){
override fun onSaveInstanceState(outState: Bundle) {
super.onSaveInstanceState(outState)
//Want to access the iconMap here,but it is outside of the Map's scope. How do I access it?
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val iconMap = mapOf("contactlessIcon" to getDrawable(R.drawable.ic_contactless_24px),"fingerprintIcon" to getDrawable(R.drawable.ic_fingerprint_black_48dp),"codeIcon" to getDrawable(R.drawable.ic_code_24px))
}
}
我刚接触Android编程,因此这可能很容易解决。我想访问onSaveInstanceState()中的iconMap
,但它不在iconMap's
范围内。我无法将iconMap
设置为全局变量,因为这会使我的应用程序崩溃。
解决方法
正如@ianhanniballake所说-您不应该保存始终相同的Drawable。在这种情况下,由于您onCreate
会在活动恢复时再次被调用,因此这尤其不必要。
但是,要回答您的问题,您可以这样做:
class MainActivity: AppCombatActivity(){
// define it here,so it's a member of the class
lateinit val iconMap: Map<String,Drawable>
override fun onSaveInstanceState(outState: Bundle) {
super.onSaveInstanceState(outState)
//now you can use it here
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
//set its value
iconMap = mapOf("contactlessIcon" to getDrawable(R.drawable.ic_contactless_24px),"fingerprintIcon" to getDrawable(R.drawable.ic_fingerprint_black_48dp),"codeIcon" to getDrawable(R.drawable.ic_code_24px))
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。