我试图调用在ViewModel类中创建的方法,但是无法在初始化ViewModel的MainActivity中访问它。
这是我的ViewModel类
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”
答案 0 :(得分:0)
您的mViewModel
如果类型为ViewModel
,则没有称为getMovieList
的方法。将类型更改为MovieViewModel
。
答案 1 :(得分:0)
private ViewModel mViewModel;
ViewModel没有getMovieList,因此将其更改为
private MovieViewModel viewModel;
答案 2 :(得分:0)
您正在将ViewModelProviders.of(this).get(MovieViewModel.class);
分配给基本类型ViewModel
的变量,因此您将只能访问ViewModel
中可用的方法。
将private ViewModel mViewModel;
替换为private MovieViewModel mViewModel;