Androidviewmodel дает ошибку : не удается создать экземпляр класса viewmodel не имеет конструктора нулевого аргумента
Я пытаюсь создать приложение для заметок и пытаюсь создать экземпляр своего класса Viewmodel, но он выдает ошибку. Поскольку мне нужен контекст , чтобы получить экземпляр моей базы данных комнат, я использую AndroidViewModel.
И все же он просит дать мне ошибку . Я новичок во всем этом , я думаю, что мне чего-то не хватает, любая помощь приветствуется.
// GIVING ERROR - не удается создать экземпляр класса viewmodel, не имеющий конструктора нулевого аргумента
noteViewModel = new ViewModelProvider(this).get(NoteViewModel.class);
ViewModel class public class NoteViewModel extends AndroidViewModel { NoteRepository noteRepository; private LiveData<List<NoteEntity>> allNotes; public NoteViewModel(Application application) { super(application); this.noteRepository= new NoteRepository(getApplication()); allNotes= noteRepository.getAllNotes(); } public void insert(NoteEntity noteEntity){ noteRepository.insert(noteEntity); } public void update(NoteEntity noteEntity){ noteRepository.update(noteEntity); } public void delete(NoteEntity noteEntity){ noteRepository.delete(noteEntity); } public void deleteAll(){ noteRepository.deleteAll(); } public LiveData<List<NoteEntity>> getAllUserNotes(){ return allNotes; } } MainActivity.java public class MainActivity extends AppCompatActivity { Toolbar toolbar1; RecyclerView notes_recyclerView; NoteViewModel noteViewModel; private NoteAdapter noteAdapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); toolbar1 = findViewById(R.id.toolbar1); setSupportActionBar(toolbar1); noteAdapter = new NoteAdapter(); notes_recyclerView = findViewById(R.id.notes_recyclerview); notes_recyclerView.setLayoutManager(new LinearLayoutManager(this)); notes_recyclerView.setAdapter(noteAdapter); noteViewModel = new ViewModelProvider(this).get(NoteViewModel.class); noteViewModel.getAllUserNotes().observe(this, noteEntities -> { noteAdapter.setAllnotes(noteEntities); noteAdapter.notifyDataSetChanged(); Log.d("TAG", "onCreate: DATA SET CHANGED INSIDE RECYCLERVIEW"); }); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.add_note_menu,menu); return super.onCreateOptionsMenu(menu); } @Override public boolean onOptionsItemSelected(@NonNull MenuItem item) { if (item.getItemId()==R.id.add_note_option){ Intent intent = new Intent(MainActivity.this,NewNote.class); startActivity(intent); Toast.makeText(this, "Create Note !", Toast.LENGTH_SHORT).show(); } return super.onOptionsItemSelected(item); } }
Что я уже пробовал:
Я попытался создать конструктор без аргументов , но опять же я не могу использовать getApplication() внутри super() конструктора, который нуждается в приложении.