Ошибка при построении с помощью Room: kapt Произошло исключение: java.lang.IllegalArgumentException: voidcannot be convert to an Element

При создании моего проекта, использующего библиотеку Room, Dagger для внедрения зависимостей и Kotlin, я сталкиваюсь с этой ошибкой:

[kapt] Произошло исключение: java.lang.IllegalArgumentException: voidне может быть преобразован в элемент

Вот мой код:

@Entity(tableName = "contacts_table")
data class Contact(@PrimaryKey var cid: Long,
          @ColumnInfo(name = "firstColor") var firstColor: String?,
          @ColumnInfo(name = "secondColor") var secondColor: String?,
          @ColumnInfo(name = "avatarUrl") var avatarUrl: String?,
          @ColumnInfo(name = "name") var name: String,
          @ColumnInfo(name = "nickname") var nickname: String)


@Dao
interface ContactsDao {

     @Insert(onConflict = REPLACE)
     fun insertContact(contact: Contact)

     @Query("delete from contacts_table where cid=:id")
     fun deleteContactById(id: Long)

     @Query("select * from contacts_table")
     fun getAllContacts() : List<Contact>
}


@Database(entities = [Contact::class], version = 1, exportSchema = false)
abstract class AppDatabase : RoomDatabase() {
     abstract fun contactsDao()
}

Вот пример того, как я использую свой DAO:

contactsDao.insertContact(Contact(response.id, response.firstColor, response.secondColor, 
        null, response.name, response.nickname)) 

contactsDao.insertContact(Contact(response.id, null, null, response.avatarUrl, 
        response.name, response.nickname))

Как исправить эту ошибку сборки?


person Ker_ Jen    schedule 12.08.2018    source источник
comment
Изменить abstract fun contactsDao() на abstract fun contactsDao(): ContactsDao в AppDatabase   -  person Anatolii    schedule 12.08.2018


Ответы (1)


В вашем AppDatabase вы должны указать тип возврата для contactsDao(). Должно быть ContactsDao. Итак, ваш класс должен выглядеть следующим образом:

@Database(entities = [Contact::class], version = 1, exportSchema = false)
abstract class AppDatabase : RoomDatabase() {
     abstract fun contactsDao(): ContactsDao
}
person Anatolii    schedule 12.08.2018