Wai Yan Hein
Wai Yan Hein

Reputation: 14771

Unable to show popup menu in Adapter in Android

I am developing an Android app. In my app, I am showing pop up menu in Recycler view adapter. But it is giving me error.

In onBindViewHolder of RecyclerViewAdapter, I am showing pop up menu like this

viewHolder.container.setOnLongClickListener(new View.OnLongClickListener() {
            @Override
            public boolean onLongClick(View view) {
                PopupMenu popupMenu = new PopupMenu(context,view);
                popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
                    @Override
                    public boolean onMenuItemClick(MenuItem item) {
                        return false;
                    }
                });
                popupMenu.inflate(R.menu.menu_mm_comment_item);

                popupMenu.show();
                return true;
            }

But when I fire long click event, it is giving me this error.

FATAL EXCEPTION: main Process: com.tonightfootball.waiyanhein.tonightfootballreport, PID: 28052 android.view.InflateException: Binary XML file line #17: Failed to resolve attribute at index 6: TypedValue{t=0x1d/d=0xff5c5cff a=1 r=0x106002f} at android.view.LayoutInflater.inflate(LayoutInflater.java:539) at android.view.LayoutInflater.inflate(LayoutInflater.java:423) at android.support.v7.view.menu.MenuAdapter.getView(MenuAdapter.java:93) at android.support.v7.view.menu.MenuPopup.measureIndividualMenuWidth(MenuPopup.java:160) at android.support.v7.view.menu.StandardMenuPopup.tryShow(StandardMenuPopup.java:153) at android.support.v7.view.menu.StandardMenuPopup.show(StandardMenuPopup.java:187) at android.support.v7.view.menu.MenuPopupHelper.showPopup(MenuPopupHelper.java:290) at android.support.v7.view.menu.MenuPopupHelper.tryShow(MenuPopupHelper.java:175) at android.support.v7.view.menu.MenuPopupHelper.show(MenuPopupHelper.java:141) at android.support.v7.widget.PopupMenu.show(PopupMenu.java:233) at com.tonightfootball.waiyanhein.adapter.MemeCommentsAdapter$1.onLongClick(MemeCommentsAdapter.java:113) at android.view.View.performLongClick(View.java:5237) at android.view.View$CheckForLongPress.run(View.java:21121) at android.os.Handler.handleCallback(Handler.java:739) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:148) at android.app.ActivityThread.main(ActivityThread.java:5417) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) Caused by: java.lang.UnsupportedOperationException: Failed to resolve attribute at index 6: TypedValue{t=0x1d/d=0xff5c5cff a=1 r=0x106002f} at android.content.res.TypedArray.getLayoutDimension(TypedArray.java:705) at android.view.ViewGroup$LayoutParams.setBaseAttributes(ViewGroup.java:6890) at android.view.ViewGroup$MarginLayoutParams.(ViewGroup.java:7071) at android.widget.FrameLayout$LayoutParams.(FrameLayout.java:446) at android.widget.FrameLayout.generateLayoutParams(FrameLayout.java:386) at android.widget.FrameLayout.generateLayoutParams(FrameLayout.java:385) at android.view.LayoutInflater.inflate(LayoutInflater.java:502) at android.view.LayoutInflater.inflate(LayoutInflater.java:423)  at android.support.v7.view.menu.MenuAdapter.getView(MenuAdapter.java:93)  at android.support.v7.view.menu.MenuPopup.measureIndividualMenuWidth(MenuPopup.java:160)  at android.support.v7.view.menu.StandardMenuPopup.tryShow(StandardMenuPopup.java:153)  at android.support.v7.view.menu.StandardMenuPopup.show(StandardMenuPopup.java:187)  at android.support.v7.view.menu.MenuPopupHelper.showPopup(MenuPopupHelper.java:290)  at android.support.v7.view.menu.MenuPopupHelper.tryShow(MenuPopupHelper.java:175)  at android.support.v7.view.menu.MenuPopupHelper.show(MenuPopupHelper.java:141)  at android.support.v7.widget.PopupMenu.show(PopupMenu.java:233)  at com.tonightfootball.waiyanhein.adapter.MemeCommentsAdapter$1.onLongClick(MemeCommentsAdapter.java:113)  at android.view.View.performLongClick(View.java:5237)  at android.view.View$CheckForLongPress.run(View.java:21121)  at android.os.Handler.handleCallback(Handler.java:739)  at android.os.Handler.dispatchMessage(Handler.java:95)  at android.os.Looper.loop(Looper.java:148)  at android.app.ActivityThread.main(ActivityThread.java:5417)  at java.lang.reflect.Method.invoke(Native Method)  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)

I tried this way as well.

viewHolder.container.setOnLongClickListener(new View.OnLongClickListener() {
        @Override
        public boolean onLongClick(View view) {
                PopupMenu popupMenu = new PopupMenu(context,view);
                popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
                @Override
                        public boolean onMenuItemClick(MenuItem item) {
                        return false;
                   }
                });
                popupMenu.getMenuInflater().inflate(R.menu.menu_mm_comment_item,popupMenu.getMenu());

                popupMenu.show();
                return true;
            }
        });

I just got the same error. This is my menu xml file

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">

    <item android:id="@+id/m_item_edit_com" android:title="Edit" app:showAsAction="ifRoom|withText" />
    <item android:id="@+id/m_item_delete_com" android:title="Delete" app:showAsAction="ifRoom|withText" />
</menu>

What is wrong with my code?

Upvotes: 0

Views: 1111

Answers (1)

Mohammed mansoor
Mohammed mansoor

Reputation: 819

Finally found the solution to this problem, though I have no explanation why this solution works.

With the following import I always had the error:

import android.support.v7.widget.PopupMenu;

It works fine with the following import:

import android.widget.PopupMenu;

Upvotes: 2

Related Questions