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

时间:2018-08-28 13:53:30

标签: android android-viewmodel

我试图调用在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”

3 个答案:

答案 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;