android - View is null in Fragment -
i have number of fragments within viewpager in 1 of activities. these fragments have text on them. goal update text on fragments when event happens in activity.
i have tried things, cannot seem find view work with. in below code have tried save view oncreateview private field. works when creating fragment, when try , call refresh mview null.
refresh implemented in interface. viewpager has 2 different fragments, implemented interface allow me cast unknown fragment call refresh.
i have tried write below code best illustrate problem. can set text "hello" on refresh, activity crash because mview null.
private view mview = null; @override public view oncreateview(layoutinflater inflater, viewgroup container, bundle savedinstancestate) { if (container == null) { return null; } view view = inflater.inflate(r.layout.view_account_general, container, false); mview = view; setcontent(); return view; } private void setcontent() { if (mview == null) return; ((textview) mview.findviewbyid(r.id.mid)).settext("hello"); } @override public void refresh() { ((textview) mview.findviewbyid(r.id.mid)).settext("test"); } what doing wrong , should doing instead? fragments new me , haven't programmed android in long time. intention update value of textview when refresh method called.
thank attempts @ helping me issue!
edit: requested, exception trace.
fatal exception: main java.lang.nullpointerexception @ com.jordanmoore.finances.accountgeneralfragment.refresh(accountgeneralfragment.java:85) @ com.jordanmoore.finances.accountactivity.onoptionsitemselected(accountactivity.java:222) @ android.app.activity.onmenuitemselected(activity.java:2534) @ android.support.v4.app.fragmentactivity.onmenuitemselected(fragmentactivity.java:361) @ com.android.internal.policy.impl.phonewindow.onmenuitemselected(phonewindow.java:964) @ com.android.internal.view.menu.menubuilder.dispatchmenuitemselected(menubuilder.java:735) @ com.android.internal.view.menu.menuitemimpl.invoke(menuitemimpl.java:149) @ com.android.internal.view.menu.menubuilder.performitemaction(menubuilder.java:874) @ com.android.internal.view.menu.menupopuphelper.onitemclick(menupopuphelper.java:156) @ android.widget.adapterview.performitemclick(adapterview.java:298) @ android.widget.abslistview.performitemclick(abslistview.java:1090) @ android.widget.abslistview$performclick.run(abslistview.java:2863) @ android.widget.abslistview$1.run(abslistview.java:3538) @ android.os.handler.handlecallback(handler.java:615) @ android.os.handler.dispatchmessage(handler.java:92) @ android.os.looper.loop(looper.java:213) @ android.app.activitythread.main(activitythread.java:4786) @ java.lang.reflect.method.invokenative(native method) @ java.lang.reflect.method.invoke(method.java:511) @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:789) @ com.android.internal.os.zygoteinit.main(zygoteinit.java:556) @ dalvik.system.nativestart.main(native method)
bottom line- fragment should in control of refreshing it's own view. activity should never call "refresh" method in fragment, because it's painful , error-prone determine when fragment initialized , ready render.
in case, activity broadcast "update", fragments register receive. long ensure register after preconditions have been met, , unregister before preconditions become invalid, things work. e.g., follow typical pattern of registering in onresume() on unregistering in onpause().
Comments
Post a Comment