Компоненты архитектуры Android Экземпляр AndroidViewModel не может быть создан.Попытка сделать простую комнату БД - PullRequest
0 голосов
/ 18 декабря 2018

Вот мой класс, расширяющий 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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...