i have main activity has 2 tabs (fragments). in fragment calling new activity startactivityforresult. on new activity put result code when button pressed. problem "onactivityresult" in fragment never called , can't figure why!.
fragment code:
requestlistview.setonitemclicklistener(new adapterview.onitemclicklistener() { @override public void onitemclick(adapterview<?> parent, view view, int position, long id) { view.setselected(true); intent selectedrentrequest = new intent(getactivity(), selectedrentrequest.class); selectedrentrequest.putextra("carnumbers", scarnumbers); startactivityforresult(selectedrentrequest, 1); } }); @override public void onactivityresult(int requestcode, int resultcode, intent data) { super.onactivityresult(requestcode, resultcode, data); if (requestcode == 1 && resultcode == 1 && data != null) { loadlist(); toast.maketext(getcontext(), "hi", toast.length_long).show(); } }
second activity code (back pressed part):
@override public void onbackpressed() { intent intent = new intent(); setresult(1, intent); finish(); }
main activity (tabs part):
tablayout tablayout = (tablayout) findviewbyid(r.id.maintab); assert tablayout != null; tablayout.addtab(tablayout.newtab().settext("سيارات محافظتك")); tablayout.addtab(tablayout.newtab().settext("طلبات السيارات")); tablayout.settabgravity(tablayout.gravity_fill); final viewpager viewpager = (viewpager) findviewbyid(r.id.pager); final pageradapter adapter = new pageradapter (getsupportfragmentmanager(), tablayout.gettabcount(), bundle); assert viewpager != null; viewpager.setadapter(adapter); viewpager.addonpagechangelistener(new tablayout.tablayoutonpagechangelistener(tablayout)); tablayout.setontabselectedlistener(new tablayout.ontabselectedlistener() { @override public void ontabselected(tablayout.tab tab) { viewpager.setcurrentitem(tab.getposition()); } @override public void ontabunselected(tablayout.tab tab) { } @override public void ontabreselected(tablayout.tab tab) { } });
in order make onactivityresult work in fragment must implement in activity because setresult method returns result activity hosts fragment not directly fragment
@override public void onactivityresult(int requestcode, int resultcode, intent data) { super.onactivityresult(requestcode, resultcode, data); }
Comments
Post a Comment