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;
我正在尝试调用我在 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;