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