我正在使用Steppers。所以目前我有一个活动有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个课程。
所以,你可以看到我正在进行改造。
我怎样才能正确处理这样的事情? 我读到了Parceler,Interfaces,EventBus ...... 我应该在Activity中声明所有对象实例,然后在每个片段中修改(某些对象由不同的片段修改)或者可能在每个片段中创建实例,存储信息,并在按下完成按钮时获取信息?在OnDestroy()调用的情况下,如何保存这些对象?
另外需要考虑的是,最后,当表单结束时。其他活动可能包含所有信息并要求更多(是的,需要很多信息)。
最后,每次用户填写表单(使用完整按钮,然后当其他活动要求更多时,此数据将被发送到服务器)
答案 0 :(得分:0)
我选择了Parceler方式并且完美地工作。也许帮助某人,我把@Parcel放在每个POJO类中,然后当我处理片段与StepperAdapter(因为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);
然后在接收的片段中,你必须创建一个构造函数然后你就可以接收数据了(因为片段已经创建了,所以bundle throw错误)
//Constructor
public fragment2(){
super();
setArguments(new Bundle());
}
当fragment2显示:
OBJ1 a = Parcels.unwrap(getArguments().getParcelable("OBJ1"));
OBJ2 b = Parcels.unwrap(getArguments().getParcelable("OBJ2"));
希望有人帮忙!