我想使用数据,我从API响应收到的,在两个不同的片段。
现在我有一个activity和两个碎片。
当app启动时,第一个片段中有API调用。 然后给出了API响应的结果。 另外,我想在第二个片段中使用相同的结果。 存储在列表中的我要使用的数据
所以,我的问题是:我必须在第一个片段中发出请求,然后以某种方式将数据传递给第二个片段,还是有一种方法在片段外发出请求,strore result,然后使用来自两个片段的结果?
也许我可以解释。 您必须创建一个扩展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在片段之间共享数据