对于MenuItemCompat类型,未定义getActionProvider?

时间:2013-10-15 07:49:54

标签: android

我正在尝试按照此处的指南向我的操作栏添加共享提供程序: http://developer.android.com/guide/topics/ui/actionbar.html#ShareActionProvider

然而,在尝试按照我的onCreateOptionsMenu()中的指示添加以下内容

// Set up ShareActionProvider's default share intent
MenuItem shareItem = menu.findItem(R.id.action_share);
mShareActionProvider = (ShareActionProvider)
        MenuItemCompat.getActionProvider(shareItem);
mShareActionProvider.setShareIntent(getDefaultIntent());

有一个错误说getIctionProvider未定义为MenuItemCompat类型,尽管它已记录在案: http://developer.android.com/reference/android/support/v4/view/MenuItemCompat.html#getActionProvider(android.view.MenuItem)

有什么想法吗?

谢谢!

1 个答案:

答案 0 :(得分:6)

如果没有看到您的XML,请在菜单布局中定义您的actionProviderClass:

<item android:id=...
...
yourapp:actionProviderClass="android.support.v7.widget.ShareActionProvider"/>

并使用

获取对ShareActionProvider的引用
ShareActionProvider shareActionProvider = (ShareActionProvider) MenuItemCompat.getActionProvider(menuItem);

请注意,documentation使用支持库中的示例。如果是这种情况,那么,在菜单布局中:

<item android:id=...
...
yourapp:actionProviderClass="android.widget.ShareActionProvider"/>

并获取对ShareActionProvider的引用:

ShareActionProvider shareActionProvider = (ShareActionProvider) menuItem.getActionProvider();