【问题标题】:How to cast MenuItem to LinearLayout如何将 MenuItem 转换为 LinearLayout
【发布时间】:2018-04-30 12:14:42
【问题描述】:

我有带有菜单的NavigationView。 我可以通过使用从navigationView 获得MenuItem

MenuItem menuItem = navigationView.getMenu().getItem(0);
LinearLayout linearLayout = (LinearLayout) menuItem; 

我想将menuItem 转换为LinearLayout 或查看。

我在 menu.xml 中将android:actionViewClass 设置为menu

 <item
    android:id="@+id/nav_backup"
    android:icon="@drawable/ic_sd_card_black_24dp"
    android:actionViewClass="android.widget.LinearLayout"
    android:title="@string/backup_configuration" />

在施法时,我面对的是NullPointerException。我该如何施放这个?

【问题讨论】:

    标签: android menu nullpointerexception


    【解决方案1】:

    尝试将第一个自定义布局设置为您的 MenuItem,而不是将其转换为 LinearLayout,如下面的代码

    MenuItem item = menu.findItem(R.id.action_cart);
    MenuItemCompat.setActionView(item, R.layout.menu_layout);
    LinearLayout linearLayout = (LinearLayout) MenuItemCompat.getActionView(item);
    

    编辑

    setActionView()getActionView() 方法在 API 级别 26.1.0 中已弃用。

    直接使用MenuItem.setActionView()MenuItem.getActionView()

    示例代码

     @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            MenuItem item = menu.findItem(R.id.action_menu);
            item.setActionView( R.layout.activity_main);
            LinearLayout linearLayout = (LinearLayout) item.getActionView();
            return super.onCreateOptionsMenu(menu);
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-07-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-01
      相关资源
      最近更新 更多