小编mik*_*oxy的帖子

如何在片段中使用 ViewModel?

我正在使用 MVVM 架构。我有一个activity和几个fragment,我想在activity中的API中做一个请求,然后使用ViewModel,得益于获取到的数据,将它们展示在fragment中。我该怎么做?我目前的解决方案不起作用:

活动:

viewModelRoutesFragment = new ViewModelProvider(this).get(ViewModelRoutesFragment.class);
viewModelRoutesFragment.init();
Run Code Online (Sandbox Code Playgroud)

分段:

viewModelRoutesFragment = new ViewModelProvider(this).get(ViewModelRoutesFragment.class);
viewModelRoutesFragment.getRoutes().observe(getActivity(), new Observer<List<RoutesResponse>>() {
    @Override
    public void onChanged(List<RoutesResponse> routes) {

                //Show data
    }
});
Run Code Online (Sandbox Code Playgroud)

存储库:

public class RemoteRepository {

private ApiRequest apiRequest;
private MutableLiveData<List<RoutesResponse>> routes = new MutableLiveData<>();

public RemoteRepository() {
    apiRequest = RetrofitRequest.getInstance().create(ApiRequest.class);
}

public MutableLiveData<List<RoutesResponse>> getRoutes() {

    apiRequest.getRoutes()
            .enqueue(new Callback<List<RoutesResponse>>() {
                @Override
                public void onResponse(Call<List<RoutesResponse>> call, Response<List<RoutesResponse>> response) {

                    if (response.isSuccessful())
                        routes.setValue(response.body());
                }

                @Override
                public void onFailure(Call<List<RoutesResponse>> call, Throwable t) {
                    Log.i("Failure", "Fail!");
                } …
Run Code Online (Sandbox Code Playgroud)

java android mvvm android-fragments android-livedata

8
推荐指数
3
解决办法
1万
查看次数

无法访问 androidx.savedstate.SavedStateRegistryOwner

我有以下课程。

public abstract class AbstractMapFragment extends SupportMapFragment implements OnMapReadyCallback
Run Code Online (Sandbox Code Playgroud)

不幸的是,但由于未知的原因,该类带有红色下划线,并且出现以下消息:Cannot access androidx.savedstate.SavedStateRegistryOwner

我该如何修复它?

java android android-maps

5
推荐指数
1
解决办法
2081
查看次数