无法使用 Databind 检测 onNavigationItemSelected。如何在 Navigationview 中点击所有菜单项?

Cannot detect onNavigationItemSelected using Databind. How to get all menu item click in Navigationview?

我试过这段代码但是没有用。在我的 class 中,我实现了 onNavigationItemSelected
。我已经尝试过这个 https://medium.com/@oldergod/bottomnavigationview-callback-and-and-databinding-9775b0c31d38。但这不起作用 仪表板布局...

<data>
    <import type="android.view.View" />
    <variable
      name="navigationItemSelectedListener"
      type="al_logistics.app.com.al_logistics.Dashboard"/>
  </data>
 <android.support.design.widget.NavigationView
    android:id="@+id/nav_view"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:layout_gravity="start"
    app:headerLayout="@layout/header_manu"
 app:navigationItemSelectedListener="@{navigationItemSelectedListener::onNavigationItemSelected}"
    app:menu="@menu/list_menu"/>

这是我的 onNavigationItemSelected

 @Override
  public boolean onNavigationItemSelected(MenuItem item) {
      Toast.makeText(this, "Clicked", Toast.LENGTH_SHORT).show();
    return true;
  }

请检查你是否已经完成this.You需要实现监听器否则它不会work.Please让我知道解决方案是否有效

binding = DataBindingUtil.setContentView(this, R.layout.activity_dashboard);
binding.navView.setNavigationItemSelectedListener(this);

并从 XML 中删除此行:

app:navigationItemSelectedListener="@{navigationItemSelectedListener::onNavigationItemSelected}"

问题是 navigationItemSelectedListener 请求监听器,而不是实际函数。 正确的使用方法是:

app:navigationItemSelectedListener="@{ menuItem -> navigationItemSelectedListener.onNavigationItemSelected(menuItem) }"

这种方式在数据绑定中创建监听器。

其他解决方案(顾名思义 navigationItemSelectedListener 暗示)将实现 BottomNavigationView.OnNavigationItemSelectedListener 然后在布局中

    app:navigationItemSelectedListener="@{navigationItemSelectedListener}"