java - How to share the NavigationView between activities in Android (SDK21+) -
so, have class, homeactivity.class:
import android.content.intent; import android.os.bundle; import android.support.design.widget.navigationview; import android.support.v4.view.gravitycompat; import android.support.v4.widget.drawerlayout; import android.support.v7.app.actionbardrawertoggle; import android.support.v7.app.appcompatactivity; import android.support.v7.widget.toolbar; import android.view.menu; import android.view.menuitem; public class homeactivity extends appcompatactivity implements navigationview.onnavigationitemselectedlistener { @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_drawer); toolbar toolbar = (toolbar) findviewbyid(r.id.toolbar); setsupportactionbar(toolbar); /* todo: relocate button appear in each individual place floatingactionbutton fab = (floatingactionbutton) findviewbyid(r.id.new_ticket); fab.setonclicklistener(new view.onclicklistener() { @override public void onclick(view view) { snackbar.make(view, "new ticket function here", snackbar.length_long) .setaction("action", null).show(); } }); */ 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.main, 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_home) { } else if (id == r.id.nav_places) { // create sb hold places data final stringbuilder apiplacesinfo = new stringbuilder(); // create new intent intent = new intent(getapplicationcontext(), placesactivity.class); // available places api new thread(new runnable() { @override public void run() { apiplacesinfo.append(connectionhandler.apiconnect("spaces")); } }).start(); // parse info place[] places = dataparser.parseplaces(apiplacesinfo.tostring()); // put extras on next activity i.putextra("places", places); // start new activity startactivity(i); } else if (id == r.id.nav_slideshow) { } else if (id == r.id.nav_manage) { } else if (id == r.id.nav_share) { } else if (id == r.id.nav_send) { } drawerlayout drawer = (drawerlayout) findviewbyid(r.id.drawer_layout); drawer.closedrawer(gravitycompat.start); return true; } } and activity_drawer.xml:
<?xml version="1.0" encoding="utf-8"?> <android.support.v4.widget.drawerlayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/drawer_layout" android:layout_width="match_parent" android:layout_height="match_parent" android:fitssystemwindows="true" tools:opendrawer="start"> <include layout="@layout/app_bar_main" android:layout_width="match_parent" android:layout_height="match_parent" /> <android.support.design.widget.navigationview android:id="@+id/nav_view" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_gravity="start" android:fitssystemwindows="true" app:headerlayout="@layout/nav_header_main" app:menu="@menu/activity_main_drawer" /> </android.support.v4.widget.drawerlayout> and have items listed in .xml:
<group android:checkablebehavior="single"> <item android:id="@+id/nav_home" android:icon="@drawable/ic_menu_home" android:title="@string/menu_home" android:checked="true"/> <item android:id="@+id/nav_places" android:icon="@drawable/ic_menu_places" android:title="@string/menu_places" /> <item android:id="@+id/nav_slideshow" android:icon="@drawable/ic_menu_slideshow" android:title="option 3" /> <item android:id="@+id/nav_manage" android:icon="@drawable/ic_menu_manage" android:title="option 4" /> </group> <item android:title="separator 1"> <menu> <item android:id="@+id/nav_share" android:icon="@drawable/ic_menu_share" android:title="option 1" /> <item android:id="@+id/nav_send" android:icon="@drawable/ic_menu_send" android:title="option 2" /> </menu> </item> </menu> basically of generated androidstudio.
i want create new activity -> placesactivity , whenever press "places" on navview, starting activity. now, problem can't seem able "share" navigationview between both activities.
i've been @ 3 hours: nothing on other similar questions worked. tried extending placesactivity homeactivity , worked partially (it wouldn't show proper content , then, had copy code homeactivity class).
what's best way go this?
thanks!
Comments
Post a Comment