0

Hi I'm developing a Titanium Android module for video casting on Chromecast. I am creating menu programmatically. I'm using below code for this:

Code for menu

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;
} 

Code for cast button:

@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);
}

It is returning given error:

MenuItemCompat: getActionProvider: item does not implement SupportMenuItem; returning null

Can anyone please help why this error is raising?

Sebastian Brosch
  • 42,106
  • 15
  • 72
  • 87
Chandan Wadhwa
  • 196
  • 2
  • 13

1 Answers1

0

We are using the AppCompat library so it looks like this errors is telling you this will only accept menu items that also come from AppCompat:

android.support.v7.internal.view.menu.MenuBuilder
Fokke Zandbergen
  • 3,866
  • 1
  • 11
  • 28
  • Could you please suggest what are the changes required for creating menu items from AppCompat in the given scenario. Thanks – Chandan Wadhwa Dec 14 '15 at 14:27
  • Replace "com.android.internal.view.menu.MenuBuilder" with "android.support.v7.internal.view.menu.MenuBuilder" and might need to import that class as explained in http://stackoverflow.com/questions/24809580/noclassdeffounderror-android-support-v7-internal-view-menu-menubuilder – Fokke Zandbergen Dec 16 '15 at 18:14