1

目前我尝试用android提供的架构组件来实现一个应用程序。就仅在 UI 包中使用活动而言,这没有问题,但如果我在片段容器中实现由一个活动持有的多个片段,我会遇到麻烦。使用片段的数据请求的通信不应该从片段本身调用,而是从其活动调用。在这种情况下,只有活动将注册所需的视图模型,但每个片段的生命周期都没有得到正确处理......我如何在一个活动中使用多个片段从服务器请求数据并了解片段的生命周期,即使当活动正在调用视图模型?

4

3 回答 3

0

我不确定我是否理解正确。您想通过 Fragment 的生命周期感知在您的 Fragment 的 Activity 中加载数据吗?

也许您可以尝试从 Activity 访问 Fragment 的 ViewModel 以获得 FragmentLifecycle 感知 ViewModel。并且您可以通过此 ViewModel 查询数据。

viewModel = ViewModelProviders.of(YourFragment).get(FragmentViewModel.class);

我不确定这是否有效,或者这是一个好主意。谷歌指南只显示了相反的方式,从 Fragment 中的 Activity 访问 ViewModel,以在 Fragment 或 Activity 和 Fragment 之间共享数据。

于 2017-08-11T08:47:33.123 回答
0

你听说过接口监听器吗?无论有多少并发症,这将在所有方面为您提供帮助。如果您仍然感到困惑,请告诉我

于 2017-07-31T07:50:29.630 回答
0

@Rahul Khurana

public class UserProfileFragment extends LifecycleFragment {
private static final String UID_KEY = "uid";
private UserProfileViewModel viewModel;

@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
    String userId = getArguments().getString(UID_KEY);
    viewModel = ViewModelProviders.of(this).get(UserProfileViewModel.class);
    viewModel.init(userId);
}

@Override
public View onCreateView(LayoutInflater inflater,
            @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    return inflater.inflate(R.layout.user_profile, container, false);
}

如您所见,片段直接与视图模型通信,这是对数据的请求或设置一些新数据。此操作是生命周期感知的,但我知道它必须通过活动与数据层通信?这是来自官方android页面的代码片段

于 2017-07-31T08:18:43.597 回答