ViewModelProvider() 会产生错误,尽管自己的活动正在扩展 AppCompatActivity

Joc*_*hen 1 java android

目前,我想在这里学习 Android 教程: https://codelabs.developers.google.com/codelabs/android-room-with-a-view/#13

我想将教程的想法纳入我自己的项目中,并创建了我自己的活动“WordsList”,并扩展了与教程相同的类。一切顺利,但我的代码片段最后一行中的“this”抛出错误“无法解析构造函数 ViewModelProvider(...)”。在我看来,这绝对没有意义,因为 MainActivity 和 WordsList 类都扩展同一个类?!为了更深入地研究,我下载了 github 项目并在 Android Studio 中打开并在我的手机上启动它。有效!我完全不知道是什么导致了这种差异。

MainActivity 的相应片段位于 github 上: https: //github.com/googlecodelabs/android-room-with-a-view/blob/master/app/src/main/java/com/example/android/roomwordssample/ MainActivity.java

这是我的片段:

public class WordsList extends AppCompatActivity {

// Room DB strategies ...
private WordViewModel wordViewModel;
public static final int NEW_WORD_ACTIVITY_REQUEST_CODE = 1; // Request code

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_words);

    RecyclerView recyclerView = findViewById(R.id.recyclerview);
    final WordListAdapter adapter = new WordListAdapter(this);
    recyclerView.setAdapter(adapter);
    recyclerView.setLayoutManager(new LinearLayoutManager(this));

    // Get a new or existing ViewModel from the ViewModelProvider.
    wordViewModel = new ViewModelProvider(this).get(WordViewModel.class);
Run Code Online (Sandbox Code Playgroud)

Ama*_*lam 5

根据docs,以下方式已被弃用: ViewModelProviders.of(this).get(MyViewModel.class);

现在要使用的是:
MyViewModel myViewModel = new ViewModelProvider(this).get(MyViewModel.class);

我唯一的问题是我没有在模块 gradle 文件中导出此依赖项:
implementation "androidx.lifecycle:lifecycle-extensions:2.2.0-beta01"

一旦我包含了这种依赖关系,我所有的问题就消失了。