我正在创建一个名为Inspector的abstract
类。
此类主要用于检查低级内容,例如该应用程序是首次运行还是可以正常运行的互联网等等。
这是我检查首次运行的第一个实现:
import android.content.SharedPreferences
abstract class Inspector{
private var PRIVATE_MODE = 0
private var firstRun : String = "first_run"
//Function returns if the app was run for the first time or not
fun firstRun(): Boolean{
return checkPref(firstRun)
}
private fun checkPref(PREF_NAME : String): Boolean {
val sharedPref: SharedPreferences = getSharedPreferences(PREF_NAME, PRIVATE_MODE)
return sharedPref.getBoolean(PREF_NAME, false)
}
}
这就是我
Inspector.kt
文件中的全部内容。但是我一直被这个问题困扰:Unresolved reference: getSharedPreferences
我已经在一个什么都没做的类中创建了它。
AppCompatActivity
吗? 最佳答案
从documentation page可以看到,getSharedPreferences
方法需要一个关联的上下文。在抽象类中,您没有任何上下文(而在Activity或Fragment中有上下文)。
由于您正在向抽象类中写入具体方法,因此需要在类构造函数中传递上下文,以便访问sharedPreferences:
abstract class Inspector(private val context : Context){
private var PRIVATE_MODE = 0
private var firstRun : String = "first_run"
//Function returns if the app was run for the first time or not
fun firstRun(): Boolean{
return checkPref(firstRun)
}
private fun checkPref(PREF_NAME : String): Boolean {
val sharedPref: SharedPreferences = context.getSharedPreferences(PREF_NAME, PRIVATE_MODE)
return sharedPref.getBoolean(PREF_NAME, false)
}
}