Android支持库v7,无法获取ActionProvider

标签 android android-actionbar android-support-library android-actionbar-compat oncreateoptionsmenu

我有像这样的自定义 ActionProvider。

....
import android.support.v4.view.ActionProvider;

public class MyActionProvider extends ActionProvider {
    ....
}

在menu.xml中

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:yourapp="http://schemas.android.com/apk/res-auto" >
    <item android:id="@+id/example_action_provider"
    yourapp:showAsAction="ifRoom"
    android:title="More"
    android:icon="@drawable/abc_ic_menu_moreoverflow_normal_holo_light"
    yourapp:actionProviderClass="com.example.MyActionProvider" />
</menu>

我正在尝试使用以下代码获取 ActionProvider:

import android.support.v4.view.ActionProvider;

public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
    inflater.inflate(R.menu.menu, menu);
    MenuItem menuItem = menu.findItem(R.id.example_action_provider);
    Object hack = menuItem.getActionProvider();
    ActionProvider actionProvider = (ActionProvider)hack;
    super.onCreateOptionsMenu(menu, inflater);
}

menuItem.getActionProvider 返回 android.support.v7.internal.view.menu.MenuItemWrapperJB$ActionProviderWrapperJB 类型的对象。并且它不能转换为 android.support.v4.view.ActionProvider。由于 MyActionProvider 获取一些点击事件,因此它需要返回给 fragment 或 Activity 。这种情况该如何处理?

最佳答案

您必须使用MenuItemCompat.getActionProvider(MenuItem)检索 ActionProvider,如 Adding an Action Provider guide 上的示例所示.

关于Android支持库v7,无法获取ActionProvider,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21071235/

相关文章:

android - 适用于 PC(非 Android)的 OpenSL 教程 ES

java - 使用 whereArrayContains 搜索的效率

android - 如何在android中的tablerow或tablelayout中生成动态textview?

android - 无法获取 https :////dl. bintray.com/lukaville/maven/com/nbsp/library/1.09

android - (设计支持库)CollapsingToolbarLayout -- 工具栏在折叠时没有固定

android - 支持库 26 CoordinatorLayout

android - Viewpager 初始 fragment 中的操作项未显示

android - android studio 1.2.1 中已经定义了属性 "titleTextStyle"?

android - ICS ActionBar 溢出菜单项显示在顶部 ActionBar 和溢出菜单上

android-studio - 如何在没有支持库的情况下在Android Studio中创建项目?