Идентификатор выбранного меню BottomNavigationView не совпадает с идентификатором xml элемента - PullRequest
1 голос
/ 07 мая 2020

Я хочу изменить свой текущий фрагмент из-за выбранного пункта меню

Мое представление:

override fun onBottomNavigationItemClick(): Observable<MenuItem> =
    news_feed_router_navigation.itemSelections()

Мой докладчик:

addSubscription(getView()!!.onBottomNavigationItemClick().subscribe {
    when (it.itemId) {
        R.id.menu_newsfeed -> getView()?.showNewsFeed()
        R.id.menu_reports -> getView()?.showReports()
        R.id.menu_chats -> getView()?.showChats()
        R.id.menu_profile -> getView()?.showProfile()
    }
})

Мое меню xml :

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">

    <item
        android:id="@+id/menu_newsfeed"
        android:icon="@drawable/ic_home" />

    <item
        android:id="@+id/menu_reports"
        android:icon="@drawable/ic_widgets_black_24dp" />

    <item
        android:id="@+id/menu_chats"
        android:icon="@drawable/ic_chat" />

    <item
        android:id="@+id/menu_profile"
        android:icon="@drawable/ic_profile" />

</menu>

Но когда я проверяю MenuItem.itemId, id не тот, который я ищу: enter image description here

1 Ответ

0 голосов
/ 07 мая 2020

Причина в том, что идентификаторы представлений в ресурсах сохраняются не как текстовые значения, а как целые числа.

Например, попробуйте добавить кнопку и установить android: id = "login_button", и при нажатии кнопки попробуйте зарегистрировать ее идентификатор. То же самое происходит с пунктами меню.

Вы можете увидеть больше по этой ссылке: https://developer.android.com/guide/topics/resources/providing-resources#Accessing

...