bottomnavigationview - Android Bottom Navigation -


i have been implementing bottom navigation bar app, problem no matter activity on dashboard icon highlighted one. how whichever activity on highlighted one?

public class dashboard extends appcompatactivity     implements view.onclicklistener {  private bottomnavigationview.onnavigationitemselectedlistener monnavigationitemselectedlistener         = new bottomnavigationview.onnavigationitemselectedlistener() {     @override     public boolean onnavigationitemselected(@nonnull menuitem item)     {         switch (item.getitemid())         {             case r.id.navigation_request:                 intent r = new intent(dashboard.this, request.class);                 startactivity(r);                 finish();                 break;             case r.id.navigation_settings:                 intent s = new intent(dashboard.this, appsettings.class);                 startactivity(s);                 finish();                 break;         }         return false;     } };  protected void oncreate(bundle savedinstancestate) {     super.oncreate(savedinstancestate);     setcontentview(r.layout.activity_dashboard);  bottomnavigationview navigation = (bottomnavigationview) findviewbyid(r.id.navigation);     navigation.setonnavigationitemselectedlistener(monnavigationitemselectedlistener); } 

here xml menu file

<?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android"> <item     android:id="@+id/navigation_home"     android:icon="@drawable/ic_home_black_24dp"     android:title="@string/title_home" />  <item     android:id="@+id/navigation_request"     android:icon="@drawable/ic_request_icon"     android:title="@string/title_request" />  <item     android:id="@+id/navigation_settings"     android:icon="@drawable/ic_icon_settings"     android:title="@string/title_settings" />  </menu> 

here how use navigation in activity_dashboard

<?xml version="1.0" encoding="utf-8"?> <linearlayout 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:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent">  <framelayout     android:id="@+id/content"     android:layout_width="match_parent"     android:layout_height="0dp"     android:layout_weight="1">  <!-- textviews here -->  </framelayout>    <android.support.design.widget.bottomnavigationview     android:id="@+id/navigation"     android:layout_width="match_parent"     android:layout_height="wrap_content"     android:layout_gravity="bottom"     android:background="?android:attr/windowbackground"     app:menu="@menu/navigation" />  </linearlayout> 

using many different activity instances duplicate bottomnavigationview , associated code (like onnavigationitemselectedlistener etc) not recommended. instead, use single activity hosts bottomnavigationview multiple fragment instances .replace()d content area user interacts bottomnavigationview.

that being said, let's see if can solve problem.

there 2 pieces puzzle. first simple: have indicate item in bottomnavigationview should selected. can achieved calling setselecteditemid(). add oncreate() method.

    navigation.setselecteditemid(r.id.navigation_settings); 

the second little more complicated. when call setselecteditemid(), system going behave though user had tapped on item. in other words, onnavigationitemselectedlistener triggered.

looking @ posted listener, notice return false. if check documentation onnavigationitemselected(), find

returns: true display item selected item , false if item should not selected

so call setselecteditemid() won't work without changing listener return true.

you still solve problem setselecteditemid() call if place call before setonnavigationitemselectedlistener() call, that's masking problem. it'd better fix listener return true in cases want tapped item appear selected.


Comments

Popular posts from this blog

android - InAppBilling registering BroadcastReceiver in AndroidManifest -

python Tkinter Capturing keyboard events save as one single string -

sql server - Why does Linq-to-SQL add unnecessary COUNT()? -