MenuItem.mActionProvider为nullMenuItem、mActionProvider、null

2023-09-12 02:23:31 作者:做尽仁义

我添加了以下菜单项:

我mainactivity的 onCreateOptionsMenu(菜单菜单)上

mediaRouteItem.getActionView()可以得到按钮successfully.but的 ActionProvider 为空。请帮助介绍为什么。非常感谢!

 <项目
机器人:ID =@ + ID / action_mediaroute01
机器人:actionProviderClass =android.support.v7.app.MediaRouteActionProvider
机器人:actionViewClass =android.support.v7.app.MediaRouteButton
机器人:showAsAction =总是
机器人:标题=@字符串/参考hello world/>
 

-

 公共无效onCreateOptionsMenu(功能菜单){
    。getMenuInflater()膨胀(R.menu.main,菜单);
    菜单项mediaRouteItem = menu.findItem(R.id.action_mediaroute01);
    MediaRouteActionProvider mediaRouteActionProvider =(MediaRouteActionProvider)MenuItemCompat.getActionProvider(mediaRouteItem);
}
 

解决方案

研究后得到的问题点。不宜用机器人:actionProviderClass,当我们想在支持库使用的对象。应采取 http://schemas.android.com/apk/res-auto 在菜单项XML命名空间actionproviderClass属性

最详细的 Android NavigationDrawer 开发实践总结

I add following Menu item:

on my mainactivity's onCreateOptionsMenu(Menu menu):

the mediaRouteItem.getActionView() can get the button successfully.but the ActionProvider is null. Please help a introduction why. Thanks a lot!

<item
android:id="@+id/action_mediaroute01"
android:actionProviderClass="android.support.v7.app.MediaRouteActionProvider"
android:actionViewClass="android.support.v7.app.MediaRouteButton"
android:showAsAction="always"
android:title="@string/hello_world"/>

-

public void onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.main, menu);
    MenuItem mediaRouteItem = menu.findItem( R.id.action_mediaroute01 );
    MediaRouteActionProvider mediaRouteActionProvider = (MediaRouteActionProvider) MenuItemCompat.getActionProvider(mediaRouteItem);
}

解决方案

Got the issue point after researching. Should not use android:actionProviderClass when we want to use objects in support library. Should take "http://schemas.android.com/apk/res-auto" namespace for the actionproviderClass attributes in menu item xml