【发布时间】:2020-05-11 21:18:27
【问题描述】:
我正在使用 kotlin 开发一个 android 应用程序。
我有一个DereDatabaseHelper 类,它有一个init 块,它使用通过类参数(?)给出的context
DereDatabaseHelper是这样的。
class DereDatabaseHelper(context: Context) {
val manifestFile: File
val fumensDBFile: File
val fumenFolder: File
val musicIDToInfo: MutableMap<Int, MusicInfo> = HashMap()
val fumenIDToMusicID: SparseIntArray = SparseIntArray()
init {
val datadir = context.getExternalFilesDir(null).parentFile.parentFile
DereDatabaseHelper 类在SongListActivity 中被实例化,如下所示。
class SongListActivity : AppCompatActivity() {
var dereDatabaseHelper : DereDatabaseHelper
init {
dereDatabaseHelper = DereDatabaseHelper(this)
}
我认为这段代码是正确的,但是这段代码抛出了NullPointerException。
java.lang.NullPointerException: 尝试调用虚方法
'java.io.File android.content.Context.getExternalFilesDir(java.lang.String)'
在空对象引用上
android.content.ContextWrapper.getExternalFilesDir(ContextWrapper.java:253) 在 com.kyhsgeekcode.dereinfo.model.DereDatabaseHelper.
(DereDatabaseHelper.kt:21) 在 com.kyhsgeekcode.dereinfo.SongListActivity. (SongListActivity.kt:31)
在init 块中执行时this 是否为空,我应该使用什么初始化样式来解决这个问题?
【问题讨论】:
标签: android kotlin constructor nullpointerexception initialization