猿问

无法创建 com.example.architectureexample.NoteViewModel

每次我运行我的应用程序时,它都会在标题中显示此错误,并且我已经搜索了一些问题,有人说将 ViewModel 构造函数公开,而我的是公开的,其他人则说:


从 HomeViewModel 中删除 Context 上下文和 LifecycleOwnerlifecycleOwner 构造函数参数,或者


创建一个可以构建 HomeViewModel 实例的 ViewModelProvider.Factory ,并将该工厂与 ViewModelProviders.of() 一起使用


我已经提出了两种解决方案,但仍然遇到相同的错误


主要活动


package com.example.architectureexample;


import androidx.appcompat.app.AppCompatActivity;

import androidx.lifecycle.Observer;

import androidx.lifecycle.ViewModelProvider;

import androidx.lifecycle.ViewModelProviders;


import android.os.Bundle;

import android.widget.Toast;


import java.util.List;


public class MainActivity extends AppCompatActivity {

//    5th video

    private NoteViewModel noteViewModel;


    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);


        noteViewModel = ViewModelProviders.of(this).get(NoteViewModel.class);

        noteViewModel.getAllNotes().observe(this, new Observer<List<Note>>() {

            @Override

            public void onChanged(List<Note> notes) {

//                update recycleView

                Toast.makeText(MainActivity.this, "onChanged", Toast.LENGTH_SHORT).show();

            }

        });

    }

}


拉丁的传说
浏览 107回答 2
2回答

回首忆惘然

您的数据库从未初始化。instance!=null应该是instance==null。

www说

我也遇到了同样的问题,因为 ViewModelProviders 已被弃用。所以我用过:NoteViewModel&nbsp;viewModel&nbsp;=&nbsp;new&nbsp;ViewModelProvider.AndroidViewModelFactory(getApplication()).create(NoteViewModel.class);
随时随地看视频慕课网APP

相关分类

Java
我要回答