2017-10-02 3 views
0

Je veux savoir que c'est une bonne pratique de définir les objets directement lors de la création d'un nouveau fragment comme dans l'exemple ci-dessous ou devrions-nous toujours rendre notre objet Parcelable et passer par l'intention?Vaut-il mieux utiliser Parcelable que de paramétrer un objet directement dans android?

échantillon public class {Fragment

private Object obj1; 

public static sample newInstance(Object obj) { 
    sample fragment = new sample(); 
    fragment.setObj1(obj); 
    return fragment; 
} 

public void setObj1(Object obj1) { 
    this.obj1 = obj1; 
} 

@Override 
public void onCreate(@Nullable Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
} 

@Nullable 
@Override 
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) { 
    return super.onCreateView(inflater, container, savedInstanceState); 
} 

}

Dans les deux cas, il sera utile si quelqu'un pouvait me donner des raisons pour lesquelles l'un est meilleur que l'autre?

+1

double possible, https : //stackoverflow.com/questions/37765613/why-use-bundle-to-pass-data-to-fragment – zvone

Répondre

1

Oui, vous devez utiliser setArguments avec un ensemble avec toutes vos entités parcelables.

C'est parce que quand vous le recréerez, votre fragment n'aura accès qu'à getArguments() et toutes les variables locales seront nulles (ou par défaut pour les primitives).

Le chemin à parcourir est dans votre newInstance

public static sample newInstance(String obj) { 
    sample fragment = new sample(); 
    Bundle args = new Bundle(); 
    args.putString(STRING_PARAM_KEY, obj); 
    fragment.setArguments(args); 
    return fragment; 
} 

Puis dans votre onCreateView

obj1 = getArguments().getString(STRING_PARAM_KEY); 

simplement déclarer dans votre classe une constante pour la clé

static final String STRING_PARAM_KEY = "string_param_key"; 
+0

Merci , Marcos! – OkDroid