【发布时间】:2021-05-16 12:12:15
【问题描述】:
我是房间数据库的新手,我正在尝试制作一个数据库来在我的列表中插入单词(每次都会从我这里得到 2 个单词) 所以我想测试它,但我得到了这个错误
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.paradise.personaldictionary, PID: 9307
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.paradise.personaldictionary/com.paradise.personaldictionary.MainActivity}: java.lang.IllegalArgumentException: File EN/FA_DB contains a path separator
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3308)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3457)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2044)
at android.os.Handler.dispatchMessage(Handler.java:107)
at android.os.Looper.loop(Looper.java:224)
at android.app.ActivityThread.main(ActivityThread.java:7562)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:539)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:950)
Caused by: java.lang.IllegalArgumentException: File EN/FA_DB contains a path separator
at android.app.ContextImpl.makeFilename(ContextImpl.java:2671)
at android.app.ContextImpl.getDatabasePath(ContextImpl.java:865)
at android.content.ContextWrapper.getDatabasePath(ContextWrapper.java:341)
at android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked(SQLiteOpenHelper.java:371)
at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:317)
at androidx.sqlite.db.framework.FrameworkSQLiteOpenHelper$OpenHelper.getWritableSupportDatabase(FrameworkSQLiteOpenHelper.java:145)
at androidx.sqlite.db.framework.FrameworkSQLiteOpenHelper.getWritableDatabase(FrameworkSQLiteOpenHelper.java:106)
at androidx.room.RoomDatabase.inTransaction(RoomDatabase.java:622)
at androidx.room.RoomDatabase.assertNotSuspendingTransaction(RoomDatabase.java:399)
at com.paradise.personaldictionary.roomdb.WordsDao_Impl.insert(WordsDao_Impl.java:77)
at com.paradise.personaldictionary.MainActivity.test(MainActivity.kt:55)
at com.paradise.personaldictionary.MainActivity.onCreate(MainActivity.kt:23)
at android.app.Activity.performCreate(Activity.java:7893)
at android.app.Activity.performCreate(Activity.java:7880)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1307)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3283)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3457)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2044)
at android.os.Handler.dispatchMessage(Handler.java:107)
at android.os.Looper.loop(Looper.java:224)
at android.app.ActivityThread.main(ActivityThread.java:7562)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:539)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:950)
这是他告诉我要修复的错误行
at com.paradise.personaldictionary.roomdb.WordsDao_Impl.insert(WordsDao_Impl.java:77)
at com.paradise.personaldictionary.MainActivity.test(MainActivity.kt:55)
at com.paradise.personaldictionary.MainActivity.onCreate(MainActivity.kt:23)
这是关于我的插入功能
这是我在wordDao类中插入的乐趣
@Insert
fun insert( words: Words)
还有我在activity main中的有趣的test()
fun test(){
val db: AppDatabase = AppDatabase.getDatabase(this)
var firstword = Words("Hello","salam")
db.wordsDao().insert(firstword)
var getDb = db.wordsDao().getAll()
}
更新 新错误
Accessing hidden field Landroid/database/sqlite/SQLiteDatabase;->mLock:Ljava/lang/Object; (greylist-max-o, linking, denied)
Accessing hidden method Landroid/database/sqlite/SQLiteDatabase;->throwIfNotOpenLocked()V (greylist-max-o, linking, denied)
Accessing hidden field Landroid/database/sqlite/SQLiteDatabase;->mLock:Ljava/lang/Object; (greylist-max-o, linking, denied)
Accessing hidden method Landroid/database/sqlite/SQLiteDatabase;->throwIfNotOpenLocked()V (greylist-max-o, linking, denied)
Accessing hidden method Landroid/database/sqlite/SQLiteSession;->setTransactionSuccessful()V (greylist-max-o, linking, denied)
Accessing hidden method Landroid/content/ContentValues;->isEmpty()Z (greylist-max-o, linking, denied)
Accessing hidden method Landroid/database/sqlite/SQLiteDatabase;->getThreadDefaultConnectionFlags(Z)I (greylist-max-o, linking, denied)
Accessing hidden method Landroid/database/sqlite/SQLiteDatabase;->yieldIfContendedHelper(ZJ)Z (greylist-max-o, linking, denied)
I/chatty: uid=10415(com.paradise.personaldictionary) ection primary] identical 1 line
W/sonaldictionar: Accessing hidden method Landroid/database/sqlite/SQLiteDatabase;->yieldIfContendedHelper(ZJ)Z (greylist-max-o, linking, denied)
V/StudioTransport: Handling agent command 1200 for pid: 19307.
I/sonaldictionar: ProcessProfilingInfo new_methods=1550 is saved saved_to_disk=1 resolve_classes_delay=8000
在我的 logcat 和调试窗口中有很多这样的行
【问题讨论】:
-
你能发布完整的 MainActivity.kt 文件吗
标签: android kotlin android-room