java - Extending SupportMapFragment - how to instantiate new fragment? -
in documentation mapfragment , supportmapfragment create new fragment calling newinstance() instead of using new supportmapfragment().
my app project extends supportmapfragment, , tried call mymapfragment.newinstance() on fragment class, resulting in map showing expected none of overridden methods such oncreateview() , onactivitycreated() being called. took me while before tried instantiating fragment using new mymapfragment() instead - , voĆla, overridden methods started getting called!
i didn't override newinstance() in class, , in hindsight it's obvious newinstance() returns instance of supportmapfragment, not instance of extended class (duh!).
but question - why is there newinstance() method , why documentation use it, when seems work using new supportmapfragment()? what's difference of using 1 or other? haven't been able find source code supportmapfragment, so...
in case believe newinstance method static factory method empty constructor has no effect (though without source code available cannot know sure), i.e. like:
public static supportmapfragment newinstance() { return new supportmapfragment(); } so why exist?
- for consistency other
newinstance(googlemap)method likely - in theory method return sub-class of
supportmapfragment, perhaps 1 optimised device or platform - in case arguments need set (perhaps or in future)
because of last point, practice use static factories when creating fragments, in future modified to:
public static supportmapfragment newinstance() { supportmapfragment fragment = new supportmapfragment(); bundle args = new bundle(); args.putboolean("secretoptionnotenabledwithnormalconstructor", true); fragment.setarguments(args); return fragment; }
Comments
Post a Comment