2017-07-12 2 views
0

Ich arbeite mit Steppers. Momentan habe ich eine Aktivität mit 3 Fragmenten, in die der Benutzer mit einigen Informationen wie einem Formular einsteigen muss. Es gibt viele Informationen, also habe ich 4 Klassen gemacht, um diese Informationen zu trennen. Darüber hinaus werden einige Informationen automatisch bekommen so in Fragmenten i für Berechtigungen fragen ... Beispiel:Wie kann ich richtig zwischen Aktivitäten und Fragmenten interagieren

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 

...

Und so weiter mit zwei Klassen mehr.

Also, wie Sie sehen können, arbeite ich auch mit Nachrüstung.

Wie kann ich so etwas richtig handhaben? Ich lese über Parceler, Interfaces, EventBus ... Sollte ich alle Objekte Instanzen in der Aktivität deklarieren und dann in jedem Fragment ändern (Einige Objekte werden durch verschiedene Fragmente modifiziert) oder vielleicht Instanzen in jedem Fragment, speichern Sie die Informationen und in Wenn die Taste "Complete" gedrückt wird, erhalten Sie die Informationen? Wie sollte ich diese Objekte im Falle eines OnDestroy() Aufrufs speichern?

Weitere Dinge zu berücksichtigen ist, dass schließlich, wenn das Formular endet. Andere Aktivitäten haben möglicherweise alle Informationen und verlangen nach mehr (ja, es wird eine Menge Informationen benötigt).

Schließlich jedes Mal, wenn der Benutzer das Formular ausfüllen (mit der kompletten Taste und dann, wenn die andere Tätigkeit mehr verlangt, wird diese Daten an den Server gesendet)

+1

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

+0

lesen Sie über saveInstance (um Ihre Daten zu speichern), FragmentManager, um Ihre Fragmente zu verwalten (um Ihre Fragmente Zustände zu speichern) und Transaktion. Über die Objekte können Sie für jedes Fragment eine Instanz von Objekten aus Aktivitäten bereitstellen. – PedroHawk

+0

Also, ich sollte Objekte in der Aktivität erstellen und sie in jedem Fragment ändern? Wie empfehlen Sie dies? Mit Parceler, Schnittstellen ...? @PedroHawk – MatiRC

Antwort

0

ich den Parceler Weg wählte und perfekt funktionieren. Vielleicht jemand helfen, habe ich @Parcel in jeder POJO Klasse, dann, wie ich mit StepperAdapter mit Fragmenten Handhabung bin (wegen der Stepstone-Bibliothek) in dem Fragment, das ich will, Daten speichern ich dies tat:

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

dann in das Fragment, das zu erhalten, müssen Sie einen Konstruktor erstellen und dann können Sie die Daten empfangen (wegen Fragment wurde bereits erstellt, so dass das Bündel throw Fehler)

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

Wenn fragment2 zeigt:

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

Hoffe jemand Hilfe!

Verwandte Themen