2017-02-10 3 views
1

член Привет StackOverflow porblem с bottomnavihationviewBottomNavigationView getmaxitemcount

в моем приложении я использовал BottomNavigationView с 4 ст. это сделать мое приложение легко и красота

BottomNavigationView bottomNavigationView = (BottomNavigationView) findViewById(R.id.bottom_navigation_view); 
     bottomNavigationView.inflateMenu(R.menu.menu_bottom_navigation); 
     bottomNavigationView.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() { 
      @Override 
      public boolean onNavigationItemSelected(@NonNull MenuItem item) { 
       int id = item.getItemId(); 
       switch (id){ 
        case R.id.action_one: 

         break; 
        case R.id.action_two: 
         FragmentTransaction manger= getSupportFragmentManager().beginTransaction(); 
         pop_web_view pop3 =new pop_web_view(); 
         pop3.show(manger,null); 

         break; 
        case R.id.action_three: 

         break; 
        case R.id.action_four: 

         break; 
       } 

       return false; 
      } 
     }); 

в activity_main:

<android.support.design.widget.BottomNavigationView 
     android:id="@+id/bottom_navigation_view" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     app:layout_anchorGravity="bottom" 
     android:paddingTop="560dp" 
     app:itemBackground="@color/colorDivider" 
     app:itemIconTint="@color/colorPrimaryDark" 
     app:itemTextColor="@color/colorPrimaryDark" 
     app:menu="@menu/menu_bottom_navigation" /> 

в меню XML:

<?xml version="1.0" encoding="utf-8"?> 
<menu 
    xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item 
     android:id="@+id/action_one" 
     android:icon="@android:drawable/ic_secure" 
     android:title="One"/> 
    <item 
     android:id="@+id/action_two" 
     android:icon="@android:drawable/ic_dialog_info" 
     android:title="Two"/> 
    <item 
     android:id="@+id/action_three" 
     android:icon="@android:drawable/ic_dialog_email" 
     android:title="Three"/> 
    <item 
     android:id="@+id/action_four" 
     android:icon="@android:drawable/ic_popup_reminder" 
     android:title="Four"/> 
</menu> 

НО у меня есть проблемы, вызванные:

java.lang.IllegalArgumentException: Maximum number of items supported by BottomNavigationView is 5. Limit can be checked with BottomNavigationView#getMaxItemCount() 
+0

https://medium.com/@chornenkyy.v/first-look-at-bottomnavigationview-from-android-design-library-8244de85b953 # .jae121tmp –

ответ

3

ошибка говорит, что максимальное количество элементов su pported по BottomNavigationView 5.

И попробуйте удалить

bottomNavigationView.inflateMenu(R.menu.menu_bottom_navigation);

, потому что вы уже надувать его в app:menu="@menu/menu_bottom_navigation"

И вы изменяете его по телефону

bottomNavigationView.inflateMenu(R.menu.menu_bottom_navigation);

Docume ntation говорит Существующие элементы в меню не будут изменены или удалены.

Установите этот флажок documention

И проверить это answer

Реализация BottomNavigationView имеет условие: при наличии более 3-х пунктов, то используйте режим переключения передач.

+0

У меня есть 4 элемента только –

+0

@AyhamShowa код, который вы публикуете здесь, находится в menu_bottom_navigation.xml? –

+0

это треска для menu_bottom_navigation.xml –

1

Я знаю, что вы приняли текущий ответ, но он неполный. Вы добавили меню в вашем XML в BottomNavigationView, то вы пытаетесь вызвать inflateMenu(...), однако, documentation ясно говорит:

Существующие пункты меню не будут изменены или удалены.

Это означает, что вы добавление пунктов меню этой точки зрения, не заменяя их.

Что вы можете сделать, чтобы исправить это выглядит следующим образом:

bottomNavigationView.getMenu().clear(); 
bottomNavigationView.inflateMenu(R.menu.menu_bottom_navigation); 

Также стоит отметить, что вы делаете то же, что дважды: один раз в XML (путем добавления app:menu="..." атрибута к элементу макета), один раз в классе Java, вызвав метод inflateMenu(...). Удалите любой из них, и он будет работать. Имейте в виду, что если вы хотите динамически менять элементы меню, вам нужно очистить существующие элементы так, как я разместил их.

+0

perfect explain .. thnxs человек –

+0

это работа, но amaintion имеет купирован :( –

+0

@AyhamShowa Что вы меняете именно –