提问者:小点点

如何在两个不同的片段中使用相同的数据


我想使用数据,我从API响应收到的,在两个不同的片段。

现在我有一个activity和两个碎片。

当app启动时,第一个片段中有API调用。 然后给出了API响应的结果。 另外,我想在第二个片段中使用相同的结果。 存储在列表中的我要使用的数据

所以,我的问题是:我必须在第一个片段中发出请求,然后以某种方式将数据传递给第二个片段,还是有一种方法在片段外发出请求,strore result,然后使用来自两个片段的结果?


共3个答案

匿名用户

也许我可以解释。 您必须创建一个扩展FragmentStateAdapter的类,然后您应该创建一个扩展Fragment的类,而不是具有多个类和一个布局。

创建ClassFragmentPagerAdapter,如下所示:

public class ClassFragmentPagerAdapter extends FragmentStateAdapter {

public ClassFragmentPagerAdapter (@NonNull FragmentManager fragmentManager, @NonNull Lifecycle lifecycle) {
    super(fragmentManager, lifecycle);
}

@NonNull
@Override
public Fragment createFragment(int position) {
    if (position == 0) {
        return new ClassFragment ();
    }
    return new ClassFragment ();
}


@Override
public int getItemCount() {
    return 2;
}

然后创建扩展Fragment的另一个ClassFragment:

public class ClassFragment extends Fragment {
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    super.onCreateView(inflater, container, savedInstanceState);

    View view = inflater.inflate(R.layout.layout_name, container, false);
    return view;

}

@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);
    //do stuff here
}

希望有帮助! 快乐编码:)

匿名用户

有几种方法可以做到这一点。

最简单的解决方法就是使用单例。 出于许多原因,我强烈反对这种想法,但在大多数情况下,这是使其启动和运行的最快方法。

另一种解决方案是将数据存储在activity的一个成员中,并通过(activity名为MyActivity).myData访问该数据。

匿名用户

如果您使用MVVM架构模式编写应用程序,我认为您可以使用Shared ViewModel.
Android文档。 在片段之间共享数据
堆栈溢出:使用ViewModel在片段之间共享数据