2016-10-31 5 views
0

私はAndroidアプリを開発しています。私のアプリでは、Recyclerビューアダプタにポップアップメニューを表示しています。しかし、それは私にエラーを与えている。 RecyclerViewAdapterのonBindViewHolderでAndroidのアダプタにポップアップメニューを表示できません

は、私はこの

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

のようなポップアップメニューを表示しています。しかし、私は長いクリックイベントを発射するとき、それは私に、このエラーを与えています。

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)

私もこの方法を試しました。

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

私はちょうど同じエラーがあります。これは私のメニューXMLファイルです

<?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> 

私のコードには何が問題なのですか?

+0

、そしてどのような使用している端末のAPIレベルですか? –

+0

MinSdkVersionは16で、バージョン6.0のNexus 5でテストしています。 –

答えて

1

最後にこの問題の解決策を見つけましたが、私はこの解決策がなぜ機能するのか説明していません。私は常にエラーが発生しました、次のインポートを

import android.support.v7.widget.PopupMenu; 

それは次のインポートと正常に動作します:

import android.widget.PopupMenu; 
マニフェスト/ build.gradleにminSdkVersionがに設定されている何
関連する問題