android - Fragment not visible in ViewPager -
i have viewpager want add fragments to. viewpager viewed correctly on screen unfortunately not hold content.
i have seen suggestion in posts replace
getsupportfragmentmanager() with
getchildfragmentmanager() but need actionbar. unfortunately childfragmentmanager not available in appcompatactivity.
while debugging have realized fragment's oncreateview() method called , returns layout.
question: how can make fragments visible? , main difference code sample ?
activity:
public class viewpageractivity extends appcompatactivity { private viewpager mviewpager; private list<location> locationlist = new arraylist<>(); private locationsbasehandler db; private custompageradapter madapter; private location mlocation; @override public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_viewpager); locationlist.add(somedata); mviewpager = (viewpager) findviewbyid(r.id.viewpager); madapter = new custompageradapter(this, getsupportfragmentmanager(), locationlist); mviewpager.setadapter(madapter); } } pager adapter:
public class custompageradapter extends fragmentpageradapter { private context mcontext; private list<location> locationlist = new arraylist<>(); public custompageradapter(context mcontext, fragmentmanager fm, list<location> locationlist) { super(fm); this.locationlist.addall(locationlist); this.mcontext = mcontext; } @override public fragment getitem(int position) { return locationfragment.newinstance(position); } @override public int getcount() { return 5; } @override public boolean isviewfromobject(view view, object object) { return false; } } fragment:
public class locationfragment extends fragment { private static final string arg_layout_id = "page_number"; @override public view oncreateview(layoutinflater inflater, viewgroup container, bundle savedinstancestate) { view layout = inflater.inflate(r.layout.fragment_location, container, false); return layout; } public static locationfragment newinstance(int selectedidforindex) { locationfragment fragment = new locationfragment(); bundle args = new bundle(); args.putint(arg_layout_id, selectedidforindex); fragment.setarguments(args); return fragment; } public int getpagenumber() { return getarguments().getint(arg_layout_id); } }
try remove method isviewfromobject in custompageradapter.
@override public boolean isviewfromobject(view view, object object) { return false; } we can see comment isviewfromobject:
determines whether page view associated specific key object returned {@link #instantiateitem(viewgroup, int)}. method required pageradapter function properly.
Comments
Post a Comment