2017-07-12 35 views
0

我正在與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,接口,EventBus ... 我應該在活動中聲明所有對象實例,然後在每個片段中修改(某些對象由不同片段修改),或者可能在每個片段中創建實例,存儲信息並當完成按鈕被按下時,獲取信息?如何在OnDestroy()調用時保存這些對象?

另一件需要考慮的事情是,最後,當表單結束時。其他活動可能有所有的信息,並要求更多(是的,需要很多信息)。

最後,每一個用戶填寫表格的時間(與完成按鈕,然後在其他活動要求更多,此數據sended到服務器)

+1

https://developer.android.com/guide/components/fragments.html#CommunicatingWithActivity – tyczj

+0

閱讀關於saveInstance(保存您的數據)的FragmentManager來管理您的碎片(以保存碎片狀態)和事務。關於對象,您可以從活動,每個片段,對象的實例提供。 – PedroHawk

+0

所以,我應該在活動中創建對象並在每個片段中修改它們?你如何推薦這樣做?使用Parceler,接口......? @PedroHawk – MatiRC

回答

0

我選擇了Parceler方式完美地工作。也許幫助別人,我把@Parcel在每個POJO類,然後,就像我跟我想保存數據我這樣做的片段與StepperAdapter(因爲達石庫)片段處理:在

// 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); 

然後接收片段,你必須創建一個構造函數,然後就可以接收數據(因爲片段已經被創建,所以捆拋誤差)

//Constructor 
public fragment2(){ 
    super(); 
    setArguments(new Bundle()); 
} 

當fragment2顯示:

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

希望有人幫忙!

相關問題