Android 如何在活动和片段之间正确交互

Android 如何在活动和片段之间正确交互,android,android-fragments,android-activity,Android,Android Fragments,Android Activity,我和你一起工作。因此,目前我有一个包含3个片段的活动,其中用户必须填写一些信息,比如表单。 有很多信息,所以我做了4个类来分离这些信息。 另外,一些信息是自动获取的,所以在片段中我请求权限。。。 例如: public class UserIds { @Nullable @Expose String phone; @Expose String Email; @Expose String phone2; @Expose String ModCel; @Expose String Doc; //

我和你一起工作。因此,目前我有一个包含3个片段的活动,其中用户必须填写一些信息,比如表单。 有很多信息,所以我做了4个类来分离这些信息。 另外,一些信息是自动获取的,所以在片段中我请求权限。。。 例如:

public class UserIds {
@Nullable
@Expose  String phone;
@Expose String Email;
@Expose String phone2;
@Expose String ModCel;
@Expose String Doc;


//Setters, getters and another simple method

public class UserLocation {
@Nullable
@Expose  String street;
@Expose int number;
....

//Setters, getters and another simple method

以此类推,再上2节课

所以,正如你所看到的,我也在进行改造

我怎样才能正确处理这样的事情? 我读过关于,接口,事件总线。。。 我应该声明活动中的所有对象实例,然后在每个片段中修改(一些对象由不同的片段修改)还是在每个片段中创建实例,存储信息,并在按下“完成”按钮时获取信息?在OnDestroy()调用的情况下,我应该如何保存这些对象

要考虑的另一件事是,最后,当表单结束时。其他活动可能拥有所有信息并要求更多信息(是的,需要很多信息)


最后,每次用户填写表单时(使用“完成”按钮,然后当其他活动要求更多时,此数据将发送到服务器)

我选择了包裹员的方式,并且工作得非常完美。也许可以帮助某人,我在每个POJO类中放置@Parcel,然后当我使用StepRadapter处理片段时(因为stepstone库),在我想要保存数据的片段中,我这样做了:

    // Obtaing all the fragments 
    List<Fragment> steps = getFragmentManager().getFragments();
    // save states
    Bundle bundle = new Bundle();
    Parcelable wrapped = Parcels.wrap(obj1);
    Parcelable wrapped2 = Parcels.wrap(obj2);
    bundle.putParcelable("OBJ1", wrapped);
    bundle.putParcelable("OBJ2", wrapped2);
    steps.get(fragment2reference).getArguments().putAll(bundle);
当fragment2显示时:

   OBJ1 a = Parcels.unwrap(getArguments().getParcelable("OBJ1"));
   OBJ2 b = Parcels.unwrap(getArguments().getParcelable("OBJ2"));

希望有人能帮忙

阅读有关saveInstance(保存数据)、FragmentManager、管理片段(保存片段状态)和事务的信息。关于对象,您可以从活动向每个片段提供一个对象实例?您建议如何操作?使用Parceler,接口@PedroHawkinterfaces是最佳实践。好裁判。您有一些变通方法,比如对每个片段使用父(活动)引用来访问is方法/对象。
   OBJ1 a = Parcels.unwrap(getArguments().getParcelable("OBJ1"));
   OBJ2 b = Parcels.unwrap(getArguments().getParcelable("OBJ2"));