Android - 无法调用 ViewModel 中定义的方法

Android - Unable to call methods defined in ViewModel

我正在尝试调用我在 ViewModel class 中创建的方法,但我无法在初始化 ViewModel 的 MainActivity 中访问它。

这是我的 ViewModel class

public class MovieViewModel extends AndroidViewModel {

private MovieRepository movieRepository;
public List<Movie> movieList;

public MovieViewModel(@NonNull Application application) {
    super(application);
    movieRepository = new MovieRepository();
}

public List<Movie> getMovieList(String sortChoice, int pageNumber) {
    movieList = movieRepository.getMovieList(sortChoice,pageNumber);
    return movieList;
}
}

这是 MainActivity 的一部分

    private ViewModel mViewModel;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        binding = DataBindingUtil.setContentView(this, R.layout.activity_main);
        pageNumber = 1;
        sharedPref = this.getPreferences(Context.MODE_PRIVATE);
        String defaultSort = MovieConstants.POPULAR;
        choiceOfSorting = sharedPref.getString(PREF_SORT_KEY, defaultSort);

        mViewModel = ViewModelProviders.of(this).get(MovieViewModel.class);
`

当我尝试使用行

调用方法 getMovieList 时
mViewModel.getMovieList(someVariable, someVariable); 

它以红色显示 - 无法解析符号 'getMovieList'

您的 mViewModel 是类型 ViewModel,它没有名为 getMovieList 的方法。将类型更改为 MovieViewModel.

private ViewModel mViewModel;

ViewModel 没有 getMovieList,因此请将其更改为

private MovieViewModel viewModel;

您正在将 ViewModelProviders.of(this).get(MovieViewModel.class); 分配给基本类型 ViewModel 的变量,因此您将只能访问 ViewModel.

中可用的方法

private ViewModel mViewModel;替换为private MovieViewModel mViewModel;