android - Navigation drawer not working on activities using fragments -
i've been trying add nav drawer app. have mapsactivty main activity.
public class mapsactivity extends fragmentactivity implements onmapreadycallback { public googlemap mmap; @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); supportmapfragment mapfragment = (supportmapfragment) getsupportfragmentmanager() .findfragmentbyid(r.id.map); mapfragment.getmapasync(this); } @suppresswarnings("statementwithemptybody") public void onmapsearch(view view) { edittext locationsearch = (edittext) findviewbyid(r.id.edittext); string location = locationsearch.gettext().tostring(); list<address> addresslist = null; if (location != null || !location.equals("")) { geocoder geocoder = new geocoder(this); try { addresslist = geocoder.getfromlocationname(location, 1); } catch (ioexception e) { e.printstacktrace(); } address address = addresslist.get(0); latlng latlng = new latlng(address.getlatitude(), address.getlongitude()); mmap.addmarker(new markeroptions().position(latlng).title("marker")); mmap.animatecamera(cameraupdatefactory.newlatlng(latlng)); } } public void onnormalmap(view view) { mmap.setmaptype(googlemap.map_type_normal); } public void onsatellitemap(view view) { mmap.setmaptype(googlemap.map_type_satellite); } public void onterrainmap(view view) { mmap.setmaptype(googlemap.map_type_terrain); } public void onhybridmap(view view) { mmap.setmaptype(googlemap.map_type_hybrid); } public static double lng; public static double lat; @override public void onmapready(final googlemap googlemap) { mmap = googlemap; button btn = (button) findviewbyid(r.id.button); btn.setonclicklistener(new view.onclicklistener() { @override public void onclick(view v) { intent intent = new intent (v.getcontext(), registroinfo.class); intent.putextra("longitud", string.valueof(lng)); intent.putextra("latitud", string.valueof(lat)); startactivityforresult(intent, 0); } }); //view v; mmap.setonmaplongclicklistener(new googlemap.onmaplongclicklistener() { @override public void onmaplongclick(latlng point) { mmap.addmarker(new markeroptions().position(point).title("custom location").icon(bitmapdescriptorfactory.defaultmarker(bitmapdescriptorfactory.hue_red))); registroinfo regis = new registroinfo(); lng = point.longitude; lat = point.latitude; } }); // add marker in sydney , move camera latlng cusco = new latlng(-13.537733, -71.903838); mmap.addmarker(new markeroptions().position(cusco).title("cusco, peru")); float zoomlevel = 16; //this goes 21 mmap.movecamera(cameraupdatefactory.newlatlngzoom(cusco, zoomlevel)); mmap.movecamera(cameraupdatefactory.newlatlng(cusco)); if (activitycompat.checkselfpermission(this, android.manifest.permission.access_fine_location) != packagemanager.permission_granted && activitycompat.checkselfpermission(this, android.manifest.permission.access_coarse_location) != packagemanager.permission_granted) { return; } mmap.getuisettings().setmylocationbuttonenabled(true); mmap.setmylocationenabled(true); mmap.getuisettings().setmylocationbuttonenabled(true); mmap.getuisettings().setzoomcontrolsenabled(true); mmap.getuisettings().setindoorlevelpickerenabled(true);}}
notice use
extends fragmentactivity
and saw useextends menuactivity
menuactivity tried post [same navigation drawer in different activities)from menu activity have items, mapsactivity(
nav_menuprincipal
), perfilactivity(another activity showing information of current user)nav_perfil
, normalmap(style of map)nav_normal
, satellitemap(style of map)nav_satellite, terrainmap(style of map)
nav_terrainmap, hybridmap(style of map)
nav_hybrid
here goes menuactivity
public class menuactivity extends appcompatactivity implements navigationview.onnavigationitemselectedlistener { @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_menu); toolbar toolbar = (toolbar) findviewbyid(r.id.toolbar); setsupportactionbar(toolbar); drawerlayout drawer = (drawerlayout) findviewbyid(r.id.drawer_layout); actionbardrawertoggle toggle = new actionbardrawertoggle( this, drawer, toolbar, r.string.navigation_drawer_open, r.string.navigation_drawer_close); drawer.setdrawerlistener(toggle); toggle.syncstate(); navigationview navigationview = (navigationview) findviewbyid(r.id.nav_view); navigationview.setnavigationitemselectedlistener(this); } @override public void onbackpressed() { drawerlayout drawer = (drawerlayout) findviewbyid(r.id.drawer_layout); if (drawer.isdraweropen(gravitycompat.start)) { drawer.closedrawer(gravitycompat.start); } else { super.onbackpressed(); } } @override public boolean oncreateoptionsmenu(menu menu) { // inflate menu; adds items action bar if present. getmenuinflater().inflate(r.menu.menu, menu); return true; } @override public boolean onoptionsitemselected(menuitem item) { // handle action bar item clicks here. action bar // automatically handle clicks on home/up button, long // specify parent activity in androidmanifest.xml. int id = item.getitemid(); //noinspection simplifiableifstatement if (id == r.id.action_settings) { return true; } return super.onoptionsitemselected(item); } @suppresswarnings("statementwithemptybody") @override public boolean onnavigationitemselected(menuitem item) { // handle navigation view item clicks here. int id = item.getitemid(); if (id == r.id.nav_menuprincipal) { startactivity(new intent(this, mapsactivity.class)); return true; } else if (id == r.id.nav_perfil) { } else if (id == r.id.nav_suggestions) { } else if (id == r.id.nav_normalmap) { } else if (id == r.id.nav_satellitemap) { } else if (id == r.id.nav_terrainmap) { } else if (id == r.id.nav_hybridmap) { } else if (id == r.id.nav_aboutus) { } drawerlayout drawer = (drawerlayout) findviewbyid(r.id.drawer_layout); drawer.closedrawer(gravitycompat.start); return true; } }
notice i've tried
if (id == r.id.nav_menuprincipal) { startactivity(new intent(this, mapsactivity.class)); return true; }
, works not showing menu bar.for items called
normal, satellite, terrain, hybrid
i want change style of mapmapsactivity
now i'm using loginactivity connected db on hosting, has intent filter. want show mainactivity (mapsactivity) menu (navigationdrawer)
thank much. sorry if i'm not clear, first time here
here solution
public class mapsactivity extends appcompatactivity implements onmapreadycallback, navigationview.onnavigationitemselectedlistener, onclicklistener { private googlemap mmap; private navigationview mdrawer; private drawerlayout mdrawerlayout; supportmapfragment mmapfragment; private actionbardrawertoggle mdrawertoggle; private button search; int place_picker_request = 1; string placename, address; private static final float alpha_dim_value = 0.1f; @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_maps); mmapfragment = (supportmapfragment) getsupportfragmentmanager() .findfragmentbyid(r.id.map); try { manager = (locationmanager) getsystemservice(context.location_service); if (!manager.isproviderenabled(locationmanager.gps_provider)) { intent myintent = new intent(settings.action_location_source_settings); startactivity(myintent); overridependingtransition(r.anim.push_up_in, r.anim.push_up_out); } else { mmapfragment.getmapasync(this); overridependingtransition(r.anim.push_up_out, r.anim.push_up_in); } } catch (exception e) { e.printstacktrace(); } setupdrawer(); mdrawerlayout.adddrawerlistener(mdrawertoggle); mdrawerlayout.post(new runnable() { @override public void run() { mdrawertoggle.syncstate(); } }); private void showerrortoast() { toast.maketext(getapplicationcontext(), getapplicationcontext().getstring(r.string.toast_error), toast.length_short).show(); } private void setupdrawer() { assert getsupportactionbar() != null; getsupportactionbar().setdisplayhomeasupenabled(true); getsupportactionbar().setdisplayshowhomeenabled(true); mdrawer = (navigationview) findviewbyid(r.id.mnavdrawer); assert mdrawer != null; mdrawer.setnavigationitemselectedlistener(this); mdrawerlayout = (drawerlayout) findviewbyid(r.id.drawer_layout); mdrawertoggle = new actionbardrawertoggle(this, mdrawerlayout, r.string.draweropen, r.string.drawerclose) { public void ondrawerclosed(view view) { super.ondrawerclosed(view); invalidateoptionsmenu(); // creates call onprepareoptionsmenu() } public void ondraweropened(view drawerview) { super.ondraweropened(drawerview); invalidateoptionsmenu(); // creates call onprepareoptionsmenu() } }; mdrawerlayout.adddrawerlistener(mdrawertoggle); mdrawertoggle.syncstate(); } @override public boolean onnavigationitemselected(menuitem item) { intent intent = null; if (item.getitemid() == r.id.navigation_item_1) { mdrawerlayout.closedrawer(gravitycompat.start); intent = new intent(this, locationlist.class); startactivity(intent); overridependingtransition(r.anim.push_up_in, r.anim.push_up_out); finish(); return true; } if (item.getitemid() == r.id.navigation_item_2) { mdrawerlayout.closedrawer(gravitycompat.start); intent = new intent(this, mapsactivity.class); startactivity(intent); overridependingtransition(r.anim.push_up_in, r.anim.push_up_out); finish(); return true; } mdrawerlayout.closedrawers(); return true; } @override protected void onpostcreate(@nullable bundle savedinstancestate) { super.onpostcreate(savedinstancestate); mdrawertoggle.syncstate(); } @override public void onconfigurationchanged(configuration newconfig) { super.onconfigurationchanged(newconfig); mdrawertoggle.onconfigurationchanged(newconfig); } @override public boolean onoptionsitemselected(menuitem item) { int id = item.getitemid(); if (mdrawertoggle.onoptionsitemselected(item)) { return true; } if (id == android.r.id.home) { mdrawerlayout.opendrawer(gravitycompat.start); return true; } return super.onoptionsitemselected(item); } }
just copy reliable code.. , have doubt map ask me.. have solution regarding map.
Comments
Post a Comment