Привет, я разрабатываю модуль Android Titanium для видеороликов на Chromecast. Я создаю меню программно. Я использую ниже код для этого:Ошибка: MenuItemCompat: элемент getActionProvider не реализует SupportMenuItem, возвращающий нуль
Код для меню
protected Menu newMenuInstance(Context context) {
try
{
Class<?> menuBuilderClass = Class.forName("com.android.internal.view.menu.MenuBuilder");
Constructor<?> constructor = menuBuilderClass.getDeclaredConstructor(Context.class);
return (Menu) constructor.newInstance(context);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
Код для кнопки литом:
@Kroll.method
public void castButtonLoader(){
Menu menu= newMenuInstance(TiApplication.getInstance());
int menuId= TiApplication.getAppRootOrCurrentActivity().getResources().getIdentifier("main", "menu",TiApplication.getInstance().getPackageName());
new MenuInflater(getActivity().getApplicationContext()).inflate(menuId, menu);
MenuItem mediaRouteMenuItem;
mediaRouteMenuItem = menu.findItem(menuId);
MediaRouteActionProvider mediaRouteActionProvider = (MediaRouteActionProvider) MenuItemCompat.getActionProvider(mediaRouteMenuItem);
// Set the MediaRouteActionProvider selector for device discovery.
mediaRouteActionProvider.setRouteSelector(mMediaRouteSelector);
}
Он возвращается с учетом ошибки:
MenuItemCompat: getActionProvider: item does not implement SupportMenuItem; returning null
Может кто-нибудь помочь, почему эта ошибка поднимается?
Не могли бы вы предложить какие изменения, необходимые для создания пунктов меню из AppCompat в данном сценарии. Спасибо –
Замените «com.android.internal.view.menu.MenuBuilder» на «android.support.v7.internal.view.menu.MenuBuilder» и, возможно, потребуется импортировать этот класс, как описано в http://stackoverflow.com/ вопросы/24809580/NoClassDefFoundError-андроид-поддержка-v7-внутренний вид меню-menubuilder –