Als ich mit Fragments
herumspielte, wunderte ich mich über den richtigen Weg, meine Fragmente zu bevölkern.Fragment getArgument() right location
Wie die Doc sagt, verwende ich das newInstance()
Muster Argumente meiner Fragmente hinzuzufügen:
public static ItemFragment newInstance(ItemRealm item, AnnaleModel model) {
ItemFragment fragment = new ItemFragment();
Bundle args = new Bundle();
args.putString(MyPagerAdapter.KEY_ITEM, item.getId());
args.putParcelable(MyPagerAdapter.KEY_MODEL, model);
fragment.setArguments(args);
return fragment;
}
Aber dann gibt es mehrere Verhaltensweisen ich im Netz passiert sehen.
Die meisten es gesehen im onCreateView()
Methode zu setzen und stellen die Ergebnisse in den Bereichen:
protected String itemId;
protected Model mModel ;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
Bundle args = getArguments();
if (args == null || (!args.containsKey(MyPagerAdapter.KEY_ITEM) || !args.containsKey(MyPagerAdapter.KEY_MODEL))) {
Log.e("TAG", "incorrect Bundle");
return null;
}
itemId = args.getString(MyPagerAdapter.KEY_ITEM);
mModel = args.getParcelable(MyPagerAdapter.KEY_MODEL);
}
Ich kann an einigen anderen Orten sehen genau die gleiche Sache in der Fragment.onCreate()
Methode anstelle von onCreateView()
zu setzen.
Und das letzte Verhalten ist im Getter aufrufen.
private Model getModel(){
if (getArguments() != null) {
return getArguments().getParcelable(AnnalePagerAdapter.KEY_MODEL);
}
Log.e("Dan", "ItemFragment :: getModel (279): model==null !!");
return null;
}//I can also think about some lazyloading is needed
Die Fragen sind dann:
- Gibt es nun ein Konsens über die Muster (diese 3 oder sogar eine andere) zu verwenden?
- Gibt es einige Kontexte, die ich lieber verwenden sollte als eine andere?