com.android.internal.view.menu.MenuBuilder cannot be cast to android.support.v7.view.menu.MenuBuilder in android

Viewed 2160

I've created one recycler view in Activity and inside the RecyclerViewAdapter

Following is my code snippet written in onBindViewHolder():

PopupMenu popupMenu = new PopupMenu(activity,holder.ivEventShare);
popupMenu.getMenuInflater().inflate(R.menu.item_event,popupMenu.getMenu());
popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
   @Override
   public boolean onMenuItemClick(MenuItem item) {
       switch (item.getItemId()){
           case R.id.action_item_event_share:
               Toast.makeText(activity, "This Item will be shared", Toast.LENGTH_SHORT)show();
               break;
           }
           return true;
       }
   });

popupMenu.show();
MenuPopupHelper helper = new MenuPopupHelper(activity, (MenuBuilder) popupMenu.getMenu(),v);
helper.setForceShowIcon(true);
helper.setGravity(Gravity.END);
helper.show();

I've created PopUpMenu and I want it to show the menu with icons.

But it is showing following error:

com.android.internal.view.menu.MenuBuilder cannot be cast to android.support.v7.view.menu.MenuBuilder

In this line:

MenuPopupHelper helper = new MenuPopupHelper(activity, (MenuBuilder) popupMenu.getMenu(),v);

Any help would be appreciated.

1 Answers
import android.support.v7.view.menu.MenuBuilder;
import android.support.v7.view.menu.MenuPopupHelper;
import android.support.v7.widget.PopupMenu;

//enter code here

imagePostShare.setOnClickListener(new View.OnClickListener() {

@SuppressLint("RestrictedApi")
@Override
public void onClick(View v) {
    popup = new PopupMenu(mContext, v);
    popup.getMenuInflater().inflate(R.menu.share_menu, popup.getMenu());

    // popup.show();
    MenuPopupHelper menuHelper = new MenuPopupHelper(mContext, (MenuBuilder) popup.getMenu(),v);
    menuHelper.setForceShowIcon(true);
    menuHelper.show();

    popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
    @Override
    public boolean onMenuItemClick(MenuItem menuItem) {
    int id = menuItem.getItemId();

    if (id == R.id.shareAsPost) {
        String postId = item.getSharedPostId();
        Call<PostShareItem> call = webService.getPostDetails(deviceId, 
                                   profileId, token, userIds, postId);
        sendShareItemRequest(call);
    }

    if (id == R.id.shareFacebook) {}
    if (id == R.id.shareTwitter) {
        Toast.makeText(App.getAppContext(), "Removed : ", 
                     Toast.LENGTH_SHORT).show();
    }

    if (id == R.id.copyLink) {}
       return true;
    }
  });
 }
});
Related