【发布时间】:2021-02-11 16:33:24
【问题描述】:
我在我的项目中使用谷歌地图,我尝试检索纬度和经度,并从 SQLite 数据库向地图添加标记。当我尝试检索时,我收到 Null。问题出在哪里?
你可以在下面找到我的代码
class App : Application() {
var database: markerDatabase? = null
private set
override fun onCreate() {
super.onCreate()
instance = this
database = Room.databaseBuilder(this, markerDatabase::class.java, "stopmarker.db")
.createFromAsset("databases/stopmarker.db")
.allowMainThreadQueries()
.build()
}
companion object {
var instance: App? = null
}
}
interface markerDAO {
@Query("SELECT * FROM bus_stop")
fun getAll(): LiveData<List<Marker>>
@Query("SELECT title FROM bus_stop")
fun getTitle(): LiveData<List<String>>
@Query("SELECT lat FROM bus_stop")
fun getLatitude(): LiveData<List<Double>>
@Query("SELECT lon FROM bus_stop")
fun getLongitude(): LiveData<List<Double>>
}
abstract class markerDatabase : RoomDatabase() {
abstract fun MarkerDao(): markerDAO?
}
在主活动中
val db = App.instance
val lat = db?.database?.MarkerDao()?.getLatitude()
val lon = db?.database?.MarkerDao()?.getLongitude()
Log.i("My_Tag",lat?.value?.get(1).toString())
结果:空
【问题讨论】:
-
您应该使用调试器并查看
?.运算符长链的哪一部分为空。
标签: android database sqlite kotlin android-room