Android Room 问题: protected void onCreate(SupportSQLiteDatabase _db)

Dro*_*ane 5 android firebase

这是错误代码

\n
C:\\Users\\huh\\AndroidStudioProjects\\test\\app\\build\\generated\\ap_generated_sources\\debug\\out\\com\\name\\test\\database\\AppDatabase_Impl.java:56: error: onCreate(SupportSQLiteDatabase) in <anonymous com.droidbane.test.database.AppDatabase_Impl$1> cannot override onCreate(SupportSQLiteDatabase) in Delegate\n      protected void onCreate(SupportSQLiteDatabase _db) {\n                     ^\n  attempting to assign weaker access privileges; was public\n
Run Code Online (Sandbox Code Playgroud)\n

您至少可以分享我的错误或您使用的房间代码或者可以举个例子吗?

\n

这是我的错误代码,它引导我到这里:(AppDatabase_Impl.java)

\n
@Override\n  protected void onCreate(SupportSQLiteDatabase _db) {\n    if (mCallbacks != null) {\n      for (int _i = 0, _size = mCallbacks.size(); _i < _size; _i++) {\n        mCallbacks.get(_i).onCreate(_db);\n      }\n    }\n  }\n
Run Code Online (Sandbox Code Playgroud)\n

这是我关注的列表

\n

文件夹布局

\n
com.name.test\n \xe2\x94\xa3 database\n \xe2\x94\x83 \xe2\x94\x97 AppDatabase.java\n \xe2\x94\x83 \xe2\x94\x97 Words.java\n \xe2\x94\x83 \xe2\x94\x97 WordsDao.java\n \xe2\x94\xa3 MainActivity.java\n
Run Code Online (Sandbox Code Playgroud)\n

应用程序数据库.java

\n
 package com.name.test.database;\n    \n    import androidx.room.Database;\n    import androidx.room.RoomDatabase;\n    \n    @Database(entities = {Words.class}, version = 1)\n    public abstract class AppDatabase extends RoomDatabase {\n        public abstract WordsDao wordsDao();\n    }\n
Run Code Online (Sandbox Code Playgroud)\n

\n
package com.name.test.database;\n\nimport androidx.room.ColumnInfo;\nimport androidx.room.Entity;\nimport androidx.room.PrimaryKey;\n\n@Entity\npublic class Words {\n\n    @PrimaryKey\n    public int uid;\n\n    @ColumnInfo(name = "words")\n    public String words;\n}\n
Run Code Online (Sandbox Code Playgroud)\n

词道

\n
package com.name.test.database;\n\nimport androidx.room.Dao;\nimport androidx.room.Delete;\nimport androidx.room.Insert;\nimport androidx.room.Query;\n\nimport java.util.List;\n\n@Dao\npublic interface WordsDao {\n\n    @Query("SELECT * FROM words")\n    List<Words> getAll();\n\n    @Insert\n    void insertAll(Words... words);\n\n    @Delete\n    void delete(Words words);\n}\n
Run Code Online (Sandbox Code Playgroud)\n

主要活动

\n
package com.name.test;\n\nimport androidx.appcompat.app.AppCompatActivity;\nimport androidx.room.Room;\n\nimport android.nfc.Tag;\nimport android.os.Bundle;\nimport android.util.Log;\nimport android.view.View;\n\nimport com.droidbane.test.database.AppDatabase;\nimport com.droidbane.test.database.Words;\nimport com.droidbane.test.database.WordsDao;\n\nimport java.util.List;\n\npublic class MainActivity extends AppCompatActivity {\n\n    @Override\n    protected void onCreate(Bundle savedInstanceState) {\n        super.onCreate(savedInstanceState);\n        setContentView(R.layout.activity_main);\n\n\n    }\n\n    public void ChangeTextClick(View view) {\n\n        AppDatabase db = Room.databaseBuilder(getApplicationContext(),\n                AppDatabase.class, "database-name").build();\n\n\n        WordsDao wordsDao = db.wordsDao();\n        List<Words> words = wordsDao.getAll();\n        Log.w("asd", "ChangeTextClick: " + words);\n    }\n}\n
Run Code Online (Sandbox Code Playgroud)\n

这个错误是我造成的还是文档造成的?代码是旧的吗?我做错什么了吗?

\n

Md.*_*lah 6

只需将以下所有依赖项设置为同一版本即可:

//Room database
implementation "androidx.room:room-runtime:2.5.1"
implementation "androidx.room:room-ktx:2.5.1"
kapt "androidx.room:room-compiler:2.5.1"
androidTestImplementation "androidx.room:room-testing:2.5.1"
Run Code Online (Sandbox Code Playgroud)


小智 3

我通过降低版本解决了我的问题:

implementation 'androidx.room:room-runtime:2.2.2'
annotationProcessor "android.arch.persistence.room:compiler:1.1.1"
kapt "android.arch.persistence.room:compiler:1.1.1"
kapt 'androidx.room:room-compiler:2.2.2'
// optional - RxJava2 support for Room
implementation 'androidx.room:room-rxjava2:2.2.2'
// optional - RxJava3 support for Room
implementation 'androidx.room:room-rxjava3:2.4.2'
// optional - Guava support for Room, including Optional and ListenableFuture
implementation 'androidx.room:room-guava:2.2.2'
// optional - Test helpers
testImplementation 'androidx.room:room-testing:2.2.2'
// optional - Paging 3 Integration
implementation 'androidx.room:room-paging:2.4.2'
Run Code Online (Sandbox Code Playgroud)