Android Fragment getArguments() returns null -
as title suggest.
i've downloaded fragment code here, http://developer.android.com/shareables/training/fragmentbasics.zip.
fragment example android official developer site. http://developer.android.com/training/basics/fragments/fragment-ui.html
this mainactivity.java's oncreate():
/** called when activity first created. */ @override public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.news_articles); // check whether activity using layout version // fragment_container framelayout. if so, must add first fragment if (findviewbyid(r.id.fragment_container) != null) { // however, if we're being restored previous state, // don't need , should return or else // end overlapping fragments. if (savedinstancestate != null) { return; } // create instance of examplefragment headlinesfragment fragment = new headlinesfragment(); // in case activity started special instructions intent, // pass intent's extras fragment arguments //fragment.setarguments(getintent().getextras()); bundle args= new bundle(); args.putstring("category", "clothes"); args.putstring("item", "shirts"); fragment.setarguments(args); // add fragment 'fragment_container' framelayout getsupportfragmentmanager().begintransaction() .replace(r.id.fragment_container, fragment).commit(); } } and headlinesfragment.java's oncreate():
@override public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); // need use different list item layout devices older honeycomb int layout = build.version.sdk_int >= build.version_codes.honeycomb ? android.r.layout.simple_list_item_activated_1 : android.r.layout.simple_list_item_1; bundle args = getarguments(); if (args == null) { toast.maketext(getactivity(), "arguments null " , toast.length_long).show(); } else { toast.maketext(getactivity(), "text " + args , toast.length_long).show(); } // create array adapter list view, using ipsum headlines array setlistadapter(new arrayadapter<string>(getactivity(), layout, ipsum.headlines)); } i've read several qa here, 1 fragment getarguments() returns null, , many other related setarguments() , getarguments(), still i'm stuck.
and i've moved bundle , toast code onattach() , oncreateview() no avail. wrong code? think i'm missing something, dunno it.
please help! thanks.
edit:
i'll state intention more clearly. in fragmentbasic downloaded, there's mainactivity.java, headlinesfragment.java, , articlesfragment.java. 'communication' mainactivity.java articlesfragment.java not problem here. want send data mainactivity.java headlinesfragment.java. connection's this:
-------------------------------------- | mainactivity <-> headlinesfragment | | | | | |>> articlesfragment | -------------------------------------- and headlinesfragment running @ runtime.
*these code works, when using android gadget < 600px width. doesn't work when using on tablet ( >= 600px), proved @tesla1984 below. want same result either on gadget < 600px , on gadget > 600px.
@tonny
i've download fragmentbasics.zip. change argument name.here code , result pic.
mainactivity
public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.news_articles); // check whether activity using layout version // fragment_container framelayout. if so, must add first fragment if (findviewbyid(r.id.fragment_container) != null) { // however, if we're being restored previous state, // don't need , should return or else // end overlapping fragments. if (savedinstancestate != null) { return; } // create instance of examplefragment headlinesfragment fragment = new headlinesfragment(); // in case activity started special instructions intent, // pass intent's extras fragment arguments // firstfragment.setarguments(getintent().getextras()); //test bundle args= new bundle(); args.putstring("category", "clothes"); args.putstring("item", "shirts"); fragment.setarguments(args); // add fragment 'fragment_container' framelayout getsupportfragmentmanager().begintransaction() .replace(r.id.fragment_container, fragment).commit(); } } headlinesfragment
public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); // need use different list item layout devices older honeycomb int layout = build.version.sdk_int >= build.version_codes.honeycomb ? android.r.layout.simple_list_item_activated_1 : android.r.layout.simple_list_item_1; bundle args = getarguments(); if (args == null) { toast.maketext(getactivity(), "arguments null " , toast.length_long).show(); } else { toast.maketext(getactivity(), "text " + args , toast.length_long).show(); } // create array adapter list view, using ipsum headlines array setlistadapter(new arrayadapter<string>(getactivity(), layout, ipsum.headlines)); } here result

Comments
Post a Comment