Вот мой класс, расширяющий AndroidViewModel, где я пытаюсь получить контекст моей базы данных через конструктор приложения, но когда я вызываю это из MainActivity, я получаю сообщение об ошибке, говоря java.lang.RuntimeException: не удается создать экземпляр классаcom.example.roomdb33.BookViewModel
public class BookViewModel extends AndroidViewModel {
final BookDAO bookDAO;
public BookViewModel(@NonNull Application application) {
super(application);
BookRoomDB bookDB = BookRoomDB.getDatabse(application);
bookDAO = bookDB.bookDAO();
}
//For Inserting
void insert(BookEntity book){
InsertAsyncTask insertAsyncTask = new InsertAsyncTask(bookDAO);
insertAsyncTask.execute(book);
static class InsertAsyncTask extends AsyncTask<BookEntity,Void,Void>{
final BookDAO bookDAO;
InsertAsyncTask(BookDAO bookDAO) {
this.bookDAO = bookDAO;
}
@Override
protected Void doInBackground(BookEntity... bookEntities) {
bookDAO.insert(bookEntities[0]);
return null;
}
}
}
В моем BookRoomDB есть метод getDatabase, который находится ниже
static BookRoomDB getDatabse(Context context){
if (bookRoomDB == null){
synchronized (BookRoomDB.class){
if (bookRoomDB == null){
bookRoomDB = Room.databaseBuilder(context.getApplicationContext(),BookRoomDB.class,"book_database")
.build();
}
}
}
Вот как я звоню в моей MainActivity
BookViewModel bookViewModel;
bookViewModel = ViewModelProviders.of(this).get(BookViewModel.class);