【发布时间】:2021-04-20 08:57:53
【问题描述】:
我是初学者,我想保存用户设置,但是使用的设置变量是全局声明的
class MainActivity : AppCompatActivity() {
private var ASPECTRATIO =if(!getPref("AspectRatio")) AspectRatio.RATIO_16_9 else AspectRatio.RATIO_4_3 //this varible is used all over methods
@SuppressLint("ClickableViewAccessibility", "InflateParams")
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
}
fun getPref(key:String): Boolean {
val sharedPrefs=getSharedPreferences("Settings",Context.MODE_PRIVATE)
return sharedPrefs.getBoolean(key,false)
}
fun putPref(key: String,value : Boolean){
val sharedPrefs=getSharedPreferences("Settings",Context.MODE_PRIVATE)
with(sharedPrefs.edit()){
putBoolean(key, value).apply()
}
}
.....
这会产生空指针异常。我认为在 onCreate() 之前没有上下文,因为在此之前初始化了全局变量。
有没有一种解决方案,我可以使用 sharedPreference 并在 oncreate 之前从 shared prefrenece 分配值。 谢谢。
【问题讨论】:
标签: android kotlin nullpointerexception sharedpreferences