android - Fragment does not get displayed in viewpager -
pfb code , requirement , research
requirement :
i have 4 tabs (tabs a,b,c,d) having 4 different fragments (fragments a,b,c,d on each corresponding tabs) , attached viewpager
i can swipe through tabs using of fragmentstatepageradapter saves state of fragments swiped
now have list in fragment fragment , has button on click need call new fragment a1 .
i have reffered stack site link : replace fragment inside viewpager
but fragmenta on taba gets disappears , not display fragmenta1 on tab issue . kindly
my pageadapter .java class
import java.util.list; import android.support.v4.app.fragmentmanager; import android.support.v4.app.fragmentpageradapter; import android.support.v4.app.fragmentstatepageradapter; /** * <code>pageradapter</code> serves fragments when paging. * @author mwho */ public class pageradapter extends fragmentstatepageradapter { private list<fragment> fragments; private final fragmentmanager mfragmentmanager = null; private fragment mfragmentatpos0; /** * @param fm * @param fragments */ public pageradapter(fragmentmanager fm, list<fragment> fragments) { super(fm); this.fragments = fragments; } /* (non-javadoc) * @see android.support.v4.app.fragmentpageradapter#getitem(int) */ @override public fragment getitem(int position) { if (position == 0) { if (mfragmentatpos0 == null) { mfragmentatpos0 = farmerinformationfragment.newinstance(new firstpagefragmentlistener() { public void onswitchtonextfragment() { mfragmentmanager.begintransaction().remove(mfragmentatpos0).commit(); mfragmentatpos0 = fieldvisitfragment.newinstance(); notifydatasetchanged(); } }); } return mfragmentatpos0; } else return fieldvisitfragment.newinstance(); // return this.fragments.get(position); } /* (non-javadoc) * @see android.support.v4.view.pageradapter#getcount() */ @override public int getcount() { return this.fragments.size(); } @override public int getitemposition(object object) { if (object instanceof farmerinformationfragment && mfragmentatpos0 instanceof fieldvisitfragment) return position_none; return position_unchanged; } }
interface
public interface firstpagefragmentlistener { void onswitchtonextfragment(); }
fragmenta1
import com.example.fms.r; import android.annotation.suppresslint; import android.os.bundle; import android.support.v4.app.fragment; import android.view.layoutinflater; import android.view.view; import android.view.viewgroup; import android.widget.linearlayout; @suppresslint("newapi") public class fieldvisitfragment extends fragment { public static fieldvisitfragment newinstance() { fieldvisitfragment f = new fieldvisitfragment(); return f; } /** (non-javadoc) * @see android.support.v4.app.fragment#oncreateview(android.view.layoutinflater, android.view.viewgroup, android.os.bundle) */ public view oncreateview(layoutinflater inflater, viewgroup container, bundle savedinstancestate) { if (container == null) { // have different layouts, , in 1 of them // fragment's containing frame doesn't exist. fragment // may still created saved state, there // no reason try create view hierarchy because // won't displayed. note not needed -- // run code below, create , return // view hierarchy; never used. return null; } return (linearlayout)inflater.inflate(r.layout.yield_estimation_screen2_layout, container, false); } }
fragment
import com.example.fms.r; import android.annotation.suppresslint; import android.content.broadcastreceiver; import android.content.context; import android.content.intent; import android.os.bundle; import android.support.v4.app.fragment; import android.support.v4.app.fragmentmanager; import android.support.v4.app.fragmenttransaction; import android.view.layoutinflater; import android.view.view; import android.view.viewgroup; import android.widget.imageview; import android.widget.listview; import android.widget.relativelayout; import android.widget.toast; @suppresslint("newapi") public class farmerinformationfragment extends fragment { listview mlandholdinglist , mfamilydetailslist , mbankdetailslist , motherdetailslist; imageview marrowlandholding , marrowfamilyholding , marrowbankholding , marrowotherholding ; relativelayout mlandholdingrelativelayout , mfamilydetailsrelativelayout , mbankdetailsrelativelayout , motherdetailsrelativelayout ; static boolean mlandflg =false , mfamilyflg = false , mbankflg = false , motherdetailsflg = false ; broadt mscreentimeoutreceiver; broadcastreceiver mbroadcastreceiver; static firstpagefragmentlistener firstpagefragmentlistenerfrag; public static farmerinformationfragment newinstance(firstpagefragmentlistener firstpagefragmentlistener) { farmerinformationfragment f = new farmerinformationfragment(); firstpagefragmentlistenerfrag = firstpagefragmentlistener; return f; } /** (non-javadoc) * @see android.support.v4.app.fragment#oncreateview(android.view.layoutinflater, android.view.viewgroup, android.os.bundle) */ public view oncreateview(layoutinflater inflater, viewgroup container, bundle savedinstancestate) { if (container == null) { // have different layouts, , in 1 of them // fragment's containing frame doesn't exist. fragment // may still created saved state, there // no reason try create view hierarchy because // won't displayed. note not needed -- // run code below, create , return // view hierarchy; never used. return null; } view view = inflater.inflate(r.layout.tab_frag_farmer_info_layout, container,false); mscreentimeoutreceiver = new broadt(); mlandholdinglist = (listview)view.findviewbyid(r.id.landholdinglist); mfamilydetailslist = (listview)view.findviewbyid(r.id.familydetailslist); mbankdetailslist = (listview)view.findviewbyid(r.id.bankdetailslist); motherdetailslist = (listview)view.findviewbyid(r.id.otherdetailslist); mlandholdinglist.setadapter(new landholdinglistadapter(getactivity(),null ,mscreentimeoutreceiver,farmerinformationfragment.this.getactivity())); marrowlandholding = (imageview)view.findviewbyid(r.id.arrowlandholding); marrowfamilyholding = (imageview)view.findviewbyid(r.id.arrowfamily); marrowbankholding = (imageview)view.findviewbyid(r.id.arrowbank); marrowotherholding = (imageview)view.findviewbyid(r.id.arrowother); mlandholdingrelativelayout = (relativelayout)view.findviewbyid(r.id.landrel); mfamilydetailsrelativelayout = (relativelayout)view.findviewbyid(r.id.familyrel); mbankdetailsrelativelayout = (relativelayout)view.findviewbyid(r.id.bankrel); motherdetailsrelativelayout = (relativelayout)view.findviewbyid(r.id.otherrel); // land mlandholdingrelativelayout.setonclicklistener(new view.onclicklistener() { @override public void onclick(view arg0) { if(mlandflg) { marrowlandholding.setimagedrawable(getresources().getdrawable(r.drawable.down_aarow)); mlandholdinglist.setvisibility(view.visible); mlandflg = false; } else { marrowlandholding.setimagedrawable(getresources().getdrawable(r.drawable.up_aarow)); mlandholdinglist.setvisibility(view.gone); mlandflg = true; } } }); // family mfamilydetailsrelativelayout.setonclicklistener(new view.onclicklistener() { @override public void onclick(view arg0) { if(mfamilyflg) { marrowfamilyholding.setimagedrawable(getresources().getdrawable(r.drawable.down_aarow)); mfamilydetailslist.setvisibility(view.visible); mfamilyflg = false; } else { marrowfamilyholding.setimagedrawable(getresources().getdrawable(r.drawable.up_aarow)); mfamilydetailslist.setvisibility(view.gone); mfamilyflg = true; } } }); // bank mbankdetailsrelativelayout.setonclicklistener(new view.onclicklistener() { @override public void onclick(view arg0) { if(mbankflg) { marrowbankholding.setimagedrawable(getresources().getdrawable(r.drawable.down_aarow)); mbankdetailslist.setvisibility(view.visible); mbankflg = false; } else { marrowbankholding.setimagedrawable(getresources().getdrawable(r.drawable.up_aarow)); mbankdetailslist.setvisibility(view.gone); mbankflg = true; } } }); // other motherdetailsrelativelayout.setonclicklistener(new view.onclicklistener() { @override public void onclick(view arg0) { if(motherdetailsflg) { marrowotherholding.setimagedrawable(getresources().getdrawable(r.drawable.down_aarow)); motherdetailslist.setvisibility(view.visible); motherdetailsflg = false; } else { marrowotherholding.setimagedrawable(getresources().getdrawable(r.drawable.up_aarow)); motherdetailslist.setvisibility(view.gone); motherdetailsflg = true; } } }); /* mbroadcastreceiver = new broadcastreceiver() { @override public void onreceive(context context, intent intent) { toast.maketext(context, "recived", toast.length_long).show(); fieldvisitfragment fieldvisitfragment = new fieldvisitfragment(); fragmentmanager fragmentmanager = getfragmentmanager(); fragmenttransaction fragmenttransaction = fragmentmanager .begintransaction(); fragmenttransaction.replace(android.r.id.tabcontent, fieldvisitfragment); fragmenttransaction.commit(); } };*/ return view; } }
my baseadapter list of fragment on tab has button on click call fragment a1
import java.util.arraylist; import java.util.hashmap; import com.example.fms.r; import android.annotation.suppresslint; import android.annotation.targetapi; import android.app.activity; import android.content.broadcastreceiver; import android.content.context; import android.content.intentfilter; import android.os.build; import android.support.v4.app.fragment; import android.support.v4.app.fragmentactivity; import android.support.v4.app.fragmentmanager; import android.support.v4.app.fragmenttransaction; import android.view.layoutinflater; import android.view.view; import android.view.viewgroup; import android.webkit.webview.findlistener; import android.widget.baseadapter; import android.widget.imageview; import android.widget.textview; import android.widget.toast; public class landholdinglistadapter extends baseadapter{ private layoutinflater minflater; private arraylist<hashmap<string, string>> allelementdetails; private context con; broadcastreceiver mbroadcastreceiver; fragmentactivity fragmentactivity; public landholdinglistadapter (context context, arraylist<hashmap<string, string>> mapdata , broadcastreceiver mbroadcastreceiver, fragmentactivity fragmentactivity) { minflater = layoutinflater.from(context); allelementdetails = mapdata; con = context; this.mbroadcastreceiver = mbroadcastreceiver; this.fragmentactivity=fragmentactivity; } @override public int getcount() { /*return allelementdetails.size();*/ return 1 ; } @override public object getitem(int position) { //return allelementdetails.get(position); return 1; } @override public long getitemid(int position) { return 1; } @override public view getview(final int position, view convertview, viewgroup parent) { //hashmap<string, string> map = new hashmap<string, string>(); //map = allelementdetails.get(position); convertview = minflater.inflate(r.layout.farmer_info_land_holding_table_row, null); textview rsnumbertxt = (textview) convertview.findviewbyid(r.id.rsnumbertxt); textview type = (textview) convertview.findviewbyid(r.id.type); textview year = (textview) convertview.findviewbyid(r.id.year); imageview visitimg = (imageview)convertview.findviewbyid(r.id.visitbutton); imageview yieldimg = (imageview)convertview.findviewbyid(r.id.yieldbutton); imageview landimg = (imageview)convertview.findviewbyid(r.id.landbutton); visitimg.setonclicklistener(new view.onclicklistener() { @suppresswarnings("static-access") @targetapi(build.version_codes.honeycomb) @suppresslint("newapi") @override public void onclick(view arg0) {/* toast.maketext(con, "visit clicked ", toast.length_long).show(); con.registerreceiver(mbroadcastreceiver, new intentfilter( "start.fragment.action")); */ toast.maketext(con, "clicked!", toast.length_short).show(); fragmenttransaction ft = fragmentactivity.getsupportfragmentmanager().begintransaction(); ft.replace(r.id.viewpager, new fieldvisitfragment().newinstance()); ft.settransition(fragmenttransaction.transit_fragment_open); ft.addtobackstack(null); ft.commit(); } }); return convertview; } }
Comments
Post a Comment