java - Arraylist Passed in Fragment is Empty -


i create method in main activity sends arraylist bundle going fragment class, when try expected values in fragment, arraylist declared in fragment null. can me check in code?

mainactivity.java: sendbundledata() method in mainactivity send arraylist bundles fragment

public class mainactivity extends appcompatactivity {  private actionbardrawertoggle toggle; private drawerlayout drawerlayout; private listview lv; private string[] arrvalues; private arrayadapter<string> adapter; dbhelper helper; public arraylist<bible> _biblevalues;  @override protected void oncreate(bundle savedinstancestate) {     super.oncreate(savedinstancestate);     setcontentview(r.layout.activity_main);      /** instance of dbhelper */     helper = new dbhelper(mainactivity.this);      /** getting arraylist values dbhelper */     try {         _biblevalues=helper.querydata();     } catch (sqlexception e) {         e.printstacktrace();     }      /** initialize drawer layout */     drawerlayout= (drawerlayout) findviewbyid(r.id.drawerlayout_bibledashboard);      //getting values of string resources array     arrvalues=getapplicationcontext().getresources().getstringarray(r.array.verse_chapter);      //setting needed parameters in array adapter     adapter= new arrayadapter<>(this,android.r.layout.simple_list_item_1,arrvalues);     lv= (listview) findviewbyid(r.id.listview_versetitle);     lv.setadapter(adapter);      //specify onitemclick listener in listview     lv.setonitemclicklistener(new draweritemclicklistener());      if (savedinstancestate == null){         selectitem(0);     }      /** check if can createdatabase */     try {         helper.createdatabase();     }catch (ioexception e) {         e.printstacktrace();         throw  new error("unable create database");     }      /** check open database created */     try {         helper.opendatabase();     }catch (sqlexception e) {         e.printstacktrace();         throw new error("unable open database");     }     log.d("database creation","success");        /** display sample data query in database     try {         verselist=helper.querydata();          verseadapter= new verseadapter(this,verselist);      } catch (sqlexception e) {         e.printstacktrace();     } */      /** setting drawertoggle */     toggle= new actionbardrawertoggle(this,drawerlayout,r.string.drawer_opened,r.string.drawer_closed) {         @override         public void ondraweropened(view drawerview) {             super.ondraweropened(drawerview);             invalidateoptionsmenu();         }          @override         public void ondrawerclosed(view drawerview) {             super.ondrawerclosed(drawerview);             invalidateoptionsmenu(); /** end of coding */         }     }; //end of toggle '}'      drawerlayout.adddrawerlistener(toggle);      /** enabling actionbardrawer toggle */     getsupportactionbar().setdisplayhomeasupenabled(true);     getsupportactionbar().sethomebuttonenabled(true);  } /** end of oncreate */  @override public void onconfigurationchanged(configuration newconfig) {     super.onconfigurationchanged(newconfig);     toggle.onconfigurationchanged(newconfig); }  @override protected void onpostcreate(@nullable bundle savedinstancestate) {     super.onpostcreate(savedinstancestate);     toggle.syncstate(); }  @override public boolean onoptionsitemselected(menuitem item) {     if (toggle.onoptionsitemselected(item)) {     }     return true; }   /** method sending bundle of arraylist fragments*/  public void sendbundledata() {      genesisfragment gfragment= new genesisfragment();     bundle args= new bundle();     args.putparcelablearraylist("versevalues",_biblevalues); /** make object class parcelable 1st */     gfragment.setarguments(args);  }   private class draweritemclicklistener implements listview.onitemclicklistener {      @override     public void onitemclick(adapterview<?> parent, view view, int position, long id) {         selectitem(position);     } }  private void setactionbartitles(int position) {     string title;     if (position==0) {         title="genesis";     }else {         title=arrvalues[position];     }      getsupportactionbar().settitle(title); }  private void selectitem(int position) {     fragment fragment;     switch (position) {         case 0:             fragment= new genesisfragment();             sendbundledata();             break;         default:             fragment=new genesisfragment();             break;     }      fragmenttransaction ft= getfragmentmanager().begintransaction();     ft.replace(r.id.bible_screenlayout,fragment);     ft.addtobackstack(null);     ft.commit();     setactionbartitles(position);     drawerlayout.closedrawer(lv); } 

my fragment class: in oncreate method of fragment try retrieve bundle

    public class genesisfragment extends fragment {      listview lv;     arraylist<bible> verselist;     verseadapter verseadapter;        @override     public void onattach(activity activity) {         super.onattach(activity);          log.d("on attach","onattache method!");     }      /** @override */     public void oncreate(bundle savedinstancestate) {         super.oncreate(savedinstancestate);         log.d("on create","oncreate");          bundle bundle=getarguments();          verselist= new arraylist<>();         verselist=bundle.getparcelablearraylist("versevalues"); //retrieving bundles in mainactivity        }      @override     public view oncreateview(layoutinflater inflater, viewgroup container,                              bundle savedinstancestate) {          verseadapter= new verseadapter(getactivity(),verselist);         // inflate layout fragment         view v= inflater.inflate(r.layout.fragment_genesis, container, false);          return v;        }      @override     public void onviewcreated(view view, bundle savedinstancestate) {          lv=(listview)getactivity().findviewbyid(r.id.listview_genesis);          lv.setadapter(verseadapter);         verseadapter.notifydatasetchanged();       } } 

it's because setting arguments different fragment instance in sendbundledata() , replacing separate instance

pass fragment argument method

public void sendbundledata(fragment fragment) {   bundle args= new bundle(); args.putparcelablearraylist("versevalues",_biblevalues); /** make object class parcelable 1st */ fragment.setarguments(args);  } 

and switch case like

  switch (position) {     case 0:         fragment= new genesisfragment();         sendbundledata(fragment);         break;     default:         fragment=new genesisfragment();         break; } 

Comments