In android examples, why ScreenSlidePageFragment class uses a factory method for creating object -
i have no idea why used factory method creating instances of screenslidepagefragment. wrong passing pagenumber in constructor , assigning mpagenumber there, , of course getting rid of factory method , arg_page?! here code:
public class screenslidepagefragment extends fragment { /** * argument key page number fragment represents. */ public static final string arg_page = "page"; /** * fragment's page number, set argument value {@link #arg_page}. */ private int mpagenumber; /** * factory method fragment class. constructs new fragment given page number. */ public static screenslidepagefragment create(int pagenumber) { screenslidepagefragment fragment = new screenslidepagefragment(); bundle args = new bundle(); args.putint(arg_page, pagenumber); fragment.setarguments(args); return fragment; } public screenslidepagefragment() { } @override public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); mpagenumber = getarguments().getint(arg_page); } @override public view oncreateview(layoutinflater inflater, viewgroup container, bundle savedinstancestate) { // inflate layout containing title , body text. viewgroup rootview = (viewgroup) inflater .inflate(r.layout.fragment_screen_slide_page, container, false); // set title view show page number. ((textview) rootview.findviewbyid(android.r.id.text1)).settext( getstring(r.string.title_template_step, mpagenumber + 1)); return rootview; } /** * returns page number represented fragment object. */ public int getpagenumber() { return mpagenumber; }
}
what wrong doing propose data lost on configuration change. arguments bundle
automatically part of saved instance state of fragment, , data automatically retained on configuration change. otherwise, default, lose page number when user rotates screen or other configuration change.
there other ways address problem (e.g., put page number in onsavedinstancestate()
bundle
yourself). factory method , arguments bundle
simple , effective way of addressing issue, not way.
Comments
Post a Comment