Почему я получаю NullPointerException при создании комнаты базы данных? - PullRequest
0 голосов
/ 23 февраля 2020

Я прошел несколько уроков и документации по комнате для Android в kotlin. Тем не менее, я не знаю, почему приложение cra sh во время выполнения.

Я создал базу данных sqlite под названием «datos.sqlite» и сохраняю ее в папке «app \ src \ main \ assets». В базе данных есть таблица punto с полями _ID (целое число и первичный ключ), progresiva (действительное число), norte (действительное число), este (действительное число).

Я добавил комнатные зависимости в app\build.gradle.

Я создал сущность:

@Entity
data class Punto(
    @PrimaryKey val uid: Int,
    @ColumnInfo(name = "progresiva") val progresiva: Double,
    @ColumnInfo(name = "norte") val norte: Double,
    @ColumnInfo(name = "este") val este: Double
)

Я создал интерфейс:

@Dao
interface PuntoDao {
    @Query("SELECT progresiva, norte, este, sqrt(square(norte-:norte)+square(este-:este)) AS distancia FROM punto ORDER BY distancia LIMIT 2")
    fun obtenerPuntos(norte: Double,este:Double):List<Punto>
}

Я создал класс базы данных:

@Database(entities = arrayOf(Punto::class), version = 1)
abstract class BaseDeDatos : RoomDatabase() {
    abstract fun PuntoDao(): PuntoDao
}

В Функция активности onCreate Я написал:

        var bd = Room
            .databaseBuilder(applicationContext,BaseDeDatos::class.java,"progresivas")
            .createFromAsset("datos.sqlite")
            .build()

.bild () - это строка, в которой я получаю сообщение об ошибке в MainActivity.kt. Если я прокомментирую строки выше, приложение не взломает sh.

Когда я запускаю код, я получаю:

02/23 17:01:00: Launching 'app' on Pixel 2 API 26.
$ adb shell am start -n "com.a1ci.progresivasCCVB/com.example.progresivas.MainActivity" -a android.intent.action.MAIN -c android.intent.category.LAUNCHER
Waiting for process to come online...
Connected to process 29739 on device 'Pixel_2_API_26 [emulator-5554]'.
Capturing and displaying logcat messages from application. This behavior can be disabled in the "Logcat output" section of the "Debugger" settings page.
I/zygote: Not late-enabling -Xcheck:jni (already on)
W/zygote: Unexpected CPU variant for X86 using defaults: x86
D/AndroidRuntime: Shutting down VM
E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.a1ci.progresivasCCVB, PID: 29739
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.a1ci.progresivasCCVB/com.example.progresivas.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.lang.Package.getName()' on a null object reference
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2817)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2892)
        at android.app.ActivityThread.-wrap11(Unknown Source:0)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1593)
        at android.os.Handler.dispatchMessage(Handler.java:105)
        at android.os.Looper.loop(Looper.java:164)
        at android.app.ActivityThread.main(ActivityThread.java:6541)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)
     Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.lang.Package.getName()' on a null object reference
        at androidx.room.Room.getGeneratedImplementation(Room.java:79)
        at androidx.room.RoomDatabase$Builder.build(RoomDatabase.java:952)
        at com.example.progresivas.MainActivity.onCreate(MainActivity.kt:37)
        at android.app.Activity.performCreate(Activity.java:6975)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1213)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2770)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2892) 
        at android.app.ActivityThread.-wrap11(Unknown Source:0) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1593) 
        at android.os.Handler.dispatchMessage(Handler.java:105) 
        at android.os.Looper.loop(Looper.java:164) 
        at android.app.ActivityThread.main(ActivityThread.java:6541) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767) 
Process 29739 terminated.

Знаете ли вы, что вызывает взлом sh ?

Привет из Парагвая.

Клаудио Богадо Помпа.

...