在 Android 中使用 appCompat 时,Menu 和 MenuItem 的正确导入是什么?

What's the correct import of Menu and MenuItem when using appCompat in Android?

我以前使用 ActionBarSherlock,但现在我正在使用 appCompat 将我所有的应用程序移动到 Material 主题。我在下面的代码中收到 UnsupportedOperationException:

 MenuItem num = (MenuItem) menu.findItem(R.id.num);

        num.setOnActionExpandListener(new MenuItem.OnActionExpandListener() {
            @Override
            public boolean onMenuItemActionExpand(MenuItem menuItem) {
                //wow
            }

我收到以下错误:

java.lang.UnsupportedOperationException: This is not supported, use MenuItemCompat.setOnActionExpandListener()
            at android.support.v7.internal.view.menu.MenuItemImpl.setOnActionExpandListener(MenuItemImpl.java:740)

那么遇到这种情况我该怎么办呢?我的 Menu 和 MenuItems 应该从其他包导入吗?或者我只需要将不同的 all 与 MenuCompat 和 MenuItemCompat 一起使用。谢谢

方法setOnActionExpandListener仅在API 14级中添加。因此您不能安全使用它,因为它在低于14的API级中不存在。

在您的情况下,根据错误消息的建议,您应该使用 MenuItemCompat.setOnActionExpandListener()。