android - Current menu item view is always null in navigation view -
i'm using navigation view. , reason can't view of menu item. it's null. tried viewobserver, findviewbyid, didn't work. need y coord of current menu item location while performing item selection event. possible?
initializing drawer
activity.drawerindicator.setonclicklistener(new view.onclicklistener() { @override public void onclick(view v) { if (activity.drawerlayout.isdrawervisible(gravitycompat.start)) { activity.drawerlayout.closedrawer(gravitycompat.start); } else { activity.drawerlayout.opendrawer(gravitycompat.start); } } }); activity.drawerlayout.setdrawerlistener(new drawerlayout.drawerlistener() { @override public void ondrawerslide(view view, float v) { } @override public void ondraweropened(view view) { activity.closekeyboard(); } @override public void ondrawerclosed(view view) { // refresh code can called here //activity.closekeyboard(); } @override public void ondrawerstatechanged(int i) { } });
initializing navigation view
public void initnavigationview() { activity.navigationview.setnavigationitemselectedlistener(new navigationview.onnavigationitemselectedlistener() { // method trigger on item click of navigation menu @override public boolean onnavigationitemselected(menuitem menuitem) { //closing drawer on item click final int itemid=menuitem.getitemid(); final viewtreeobserver viewtreeobserver =activity.navigationview.getviewtreeobserver(); viewtreeobserver.addongloballayoutlistener(new viewtreeobserver.ongloballayoutlistener() { @override public void ongloballayout() { view menubutton = activity.findviewbyid(itemid); // called when button not there yet, must test null if (menubutton != null) { // found it! need button int[] location = new int[2]; menubutton.getlocationinwindow(location); sharedpreferencescontroller.getinstance(activity.getapplicationcontext()).settopposition(location[1]); // can rid of listener viewtreeobserver.removeglobalonlayoutlistener(this); } } }); activity.drawerlayout.closedrawers(); switch (menuitem.getitemid()) { case r.id.checkin: if (!menuitem.ischecked()) menuitem.setchecked(true); return gotocheckinitemmenu(); case r.id.boarding_passes: return gotoboardingpassesitemmenu(menuitem); case r.id.flight_status: return gotoflightstatusitemmenu(menuitem); case r.id.timetable: return gototimetableitemmenu(menuitem); case r.id.promotion: return gotopromotionitemmenu(menuitem); //case r.id.reccomend_app: // return gotoreccomendappitemmenu(); case r.id.about_app: return gotoaboutappitemmenu(menuitem); case r.id.contact_us: return gotocontactusitemmenu(menuitem); case r.id.settings: return gotosettingsitemmenu(menuitem); case r.id.data_protection: return gotodataprotectionitemmenu(menuitem); case r.id.checkin_info: return gotocheckininfoitemmenu(menuitem); case r.id.panorama: return gotopanoramaclubitemmenu(); default: toast.maketext(activity.getapplicationcontext(), "somethings wrong", toast.length_short).show(); return true; } } } ); }
as see im trying current location of menuitem on screen using treeobserver. know observer works after happens, meaning not working right after called. anyway menubutton view null
Comments
Post a Comment