android - Viewpager with Fragment issue -
i used example shown in link
its run fine in portrait position when turn phone landscape position force close ,
any overcome problem appreciated , .
viewpagerexample
public class viewpagerexample extends fragmentactivity { private myadapter madapter; private viewpager mpager; /** called when activity first created. */ @override public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.main); madapter = new myadapter(getsupportfragmentmanager()); mpager = (viewpager) findviewbyid(r.id.pager); mpager.setadapter(madapter); } public static class myadapter extends fragmentpageradapter { public myadapter(fragmentmanager fm) { super(fm); } @override public int getcount() { return 3; } @override public fragment getitem(int position) { switch (position) { case 0: return new detailfragment(); case 1: return new imagefragment(r.drawable.ic_launcher); case 2: return new imagefragment(r.drawable.five); default: return null; } } } }
imagefragment
public class imagefragment extends fragment { private final int imageresourceid; public imagefragment(int imageresourceid) { this.imageresourceid = imageresourceid; } @override public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); log.e("test", "hello"); } @override public void onactivitycreated(bundle savedinstancestate) { super.onactivitycreated(savedinstancestate); } @override public view oncreateview(layoutinflater inflater, viewgroup container, bundle savedinstancestate) { view view = inflater.inflate(r.layout.image_layout, container, false); imageview imageview = (imageview) view.findviewbyid(r.id.imageview1); imageview.setimageresource(imageresourceid); return view; } }
detailfragment
public class detailfragment extends fragment { @override public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); log.e("test", "hello"); } @override public void onactivitycreated(bundle savedinstancestate) { super.onactivitycreated(savedinstancestate); } @override public view oncreateview(layoutinflater inflater, viewgroup container, bundle savedinstancestate) { view view = inflater.inflate(r.layout.details, container, false); textview textview = (textview) view.findviewbyid(r.id.detailstext); textview.settext("testing"); return view; } }
logcat
java.lang.runtimeexception: unable start activity componentinfo{com.test.demo/com.test.demo.viewpagerexample}: android.support.v4.app.fragment$instantiationexception: unable instantiate fragment com.test.demo.imagefragment: make sure class name exists, public, , has empty constructor public @ android.app.activitythread.performlaunchactivity(activitythread.java:1651) @ android.app.activitythread.handlelaunchactivity(activitythread.java:1667) @ android.app.activitythread.handlerelaunchactivity(activitythread.java:2836) @ android.app.activitythread.access$1600(activitythread.java:117) @ android.app.activitythread$h.handlemessage(activitythread.java:939) @ android.os.handler.dispatchmessage(handler.java:99) @ android.os.looper.loop(looper.java:130) @ android.app.activitythread.main(activitythread.java:3687) @ java.lang.reflect.method.invokenative(native method) @ java.lang.reflect.method.invoke(method.java:507) @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:867) @ com.android.internal.os.zygoteinit.main(zygoteinit.java:625) @ dalvik.system.nativestart.main(native method) caused by: android.support.v4.app.fragment$instantiationexception: unable instantiate fragment com.test.demo.imagefragment: make sure class name exists, public, , has empty constructor public @ android.support.v4.app.fragment.instantiate(fragment.java:413) @ android.support.v4.app.fragmentstate.instantiate(fragment.java:97) @ android.support.v4.app.fragmentmanagerimpl.restoreallstate(fragmentmanager.java:1783) @ android.support.v4.app.fragmentactivity.oncreate(fragmentactivity.java:213) @ com.test.demo.viewpagerexample.oncreate(viewpagerexample.java:17) @ android.app.instrumentation.callactivityoncreate(instrumentation.java:1047) @ android.app.activitythread.performlaunchactivity(activitythread.java:1615) ... 12 more caused by: java.lang.instantiationexception: com.test.demo.imagefragment @ java.lang.class.newinstanceimpl(native method) @ java.lang.class.newinstance(class.java:1409) @ android.support.v4.app.fragment.instantiate(fragment.java:402) ... 18 more
fragments have have empty constructor. want pass fragment done
@override public fragment getitem(int position) { fragment fragment = null; bundle args = new bundle(); switch (position) { case 0: fragment = new detailfragment(); break; case 1: args.putint("image",r.drawable.ic_launcher); fragment = new imagefragment(); fragment.setarguments(args); break; case 2: args.putint("image",r.drawable.five); fragment = new imagefragment(); fragment.setarguments(args); break; } return fragment; }
and in fragment:
@override public void onactivitycreated(bundle savedinstancestate) { super.onactivitycreated(savedinstancestate); int imageid = getarguments().getint("image"); }
Comments
Post a Comment