Android ViewModelProvider.of()找不到符号



我试图用ViewModelProvider获取我的自定义ViewModel"ViewModelSavegame"来设置一个Observer。

viewModelSavegame = ViewModelProvider.of(this).get(ViewModelSavegame.class);
        viewModelSavegame.GetSavegameName().observe(this, new Observer<String>()
        {
            @Override
            public void onChanged(String s)
            {
                TextView title = (TextView) findViewById(R.id.textViewTitel);
                title.setText(s);
            }
        });

在Gradle构建(模块:应用程序(中,我有依赖项

implementation 'androidx.appcompat:appcompat:1.1.0'
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
implementation "androidx.lifecycle:lifecycle-viewmodel:2.2.0"
implementation "androidx.lifecycle:lifecycle-livedata:2.2.0"
implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'

但是ViewModelProvider((的创建错误:

错误:找不到符号viewModelSavegame=ViewModelProvider.of(this(.get(viewModelSavegame.class(;^symbol:(SavegameTabbedActivity(的方法

我是不是错过了什么可能是依赖?

将代码从ViewModelProvider.of(this(.get(ViewModelSavegame.class(更改为ViewModelProvider(this(.get(ViewModelSavegame.class(.

解决方案:

使用
viewModelSavegame = ViewModelProvider.AndroidViewModelFactory.getInstance(getApplication()).create(ViewModelSavegame.class);

也许有人可以提供进一步的信息,但of((似乎被getInstance((取代了。我希望这是在TabbedActivity及其片段中使用它的正确方式,以提供相同的视图模型,但至少它可以工作,不会导致应用程序崩溃。

最新更新