web-dev-qa-db-ja.com

AndroidのNavigationViewのアイテムにクリックイベントを追加する方法

AndroidプロジェクトにサイドバーNavigationDrawerを実装しようとしています。そのために、NavigationViewDrawerLayoutを使用しました。アイテムを表示するにはメニューを使用しました。追加したメニュー項目にクリックイベントを追加したいと思います。

参照用コード:ナビゲーションメニュー内-

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:Android="http://schemas.Android.com/apk/res/Android">
    <item Android:id="@+id/nav_account" Android:title="My Account"/>
    <item Android:id="@+id/nav_settings" Android:title="Settings"/>
    <item Android:id="@+id/nav_layout" Android:title="Log Out"/>
</menu>

ビューで:

<Android.support.design.widget.NavigationView
        Android:layout_width="wrap_content"
        Android:layout_height="match_parent"
        app:menu="@menu/navigation_menu"
        Android:layout_gravity="start" />
5
Sushil Shinde
  1. アクティビティにリスナーを実装します。

    public class HomeActivity extends AppCompatActivity implements 
                  NavigationView.OnNavigationItemSelectedListener
    
  2. onCreate ofActivityのsetNavigationItemSelectedListener

    NavigationView mNavigationView = (NavigationView) findViewById(R.id.account_navigation_view);
    
    if (mNavigationView != null) {
            mNavigationView.setNavigationItemSelectedListener(this);
    }
    
  3. メソッドをオーバーライドする

    public boolean onNavigationItemSelected(MenuItem item) {
        // Handle navigation view item clicks here.
        int id = item.getItemId();
    
        if (id == R.id.nav_account) {//DO your stuff }
        ...
    }
    
29
Nizam

OnNavigationItemSelectedListener(MenuItem item)メソッドを使用する必要があります。

詳細については、これを確認してください ドキュメント

2
iSandeep

これがJava 8のアプローチでより小さな定型文"implements"なしアクティビティにあります)です。クラスが抽象的であなたがこの機能を他のすべての子に実装したくない:

@Override
protected void onCreate(
  Bundle savedInstanceState) {

  NavigationView navigationView =
    findViewById(
      R.id.navigationView);

  navigationView.setNavigationItemSelectedListener(
    MyActivity::onNavigationItemSelected);
}

public static boolean onNavigationItemSelected(MenuItem item) {

  if (item.getId() == R.id.my_item) {
    myItemClickHandler();
  }

  return false;
}
0
Zon