Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 适配器getView()内的弹出菜单不工作_Android_Listview_Adapter_Popupmenu - Fatal编程技术网

Android 适配器getView()内的弹出菜单不工作

Android 适配器getView()内的弹出菜单不工作,android,listview,adapter,popupmenu,Android,Listview,Adapter,Popupmenu,我正在使用自定义适配器并在getView()方法上添加以下代码: 但我得到了这个错误: java.lang.RuntimeException:未能解析索引6处的属性 相同的代码仅适用于istitemclick(),但它在那里没有意义,因为它需要单击一次以进行设置,然后再次单击以触发弹出菜单 编辑:Logcat 11-02 17:58:51.276 1996-1996/com.android.example E/AndroidRuntime﹕ FATAL EXCEPTION: main Pr

我正在使用自定义适配器并在getView()方法上添加以下代码:

但我得到了这个错误:
java.lang.RuntimeException:未能解析索引6处的属性

相同的代码仅适用于istitemclick(),但它在那里没有意义,因为它需要单击一次以进行设置,然后再次单击以触发弹出菜单

编辑:Logcat

11-02 17:58:51.276    1996-1996/com.android.example E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: com.android.example, PID: 1996
java.lang.RuntimeException: Failed to resolve attribute at index 6
        at android.content.res.TypedArray.getLayoutDimension(TypedArray.java:603)
        at android.view.ViewGroup$LayoutParams.setBaseAttributes(ViewGroup.java:6423)
        at android.view.ViewGroup$MarginLayoutParams.<init>(ViewGroup.java:6591)
        at android.widget.FrameLayout$LayoutParams.<init>(FrameLayout.java:735)
        at android.widget.FrameLayout.generateLayoutParams(FrameLayout.java:679)
        at android.widget.FrameLayout.generateLayoutParams(FrameLayout.java:62)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:414)
        at android.support.v7.internal.view.menu.MenuPopupHelper$MenuAdapter.getView(MenuPopupHelper.java:363)
        at android.support.v7.internal.view.menu.MenuPopupHelper.measureContentWidth(MenuPopupHelper.java:212)
        at android.support.v7.internal.view.menu.MenuPopupHelper.tryShow(MenuPopupHelper.java:146)
        at android.support.v7.internal.view.menu.MenuPopupHelper.show(MenuPopupHelper.java:118)
        at android.support.v7.widget.PopupMenu.show(PopupMenu.java:168)
        at com.android.example.GetAdapter$listAdapter$1.onClick(GetAdapter.java:81)
        at android.view.View.performClick(View.java:4756)
        at android.view.View$PerformClick.run(View.java:19749)
        at android.os.Handler.handleCallback(Handler.java:739)
        at android.os.Handler.dispatchMessage(Handler.java:95)
        at android.os.Looper.loop(Looper.java:135)
        at android.app.ActivityThread.main(ActivityThread.java:5221)
        at java.lang.reflect.Method.invoke(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:372)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
11-0217:58:51.276 1996-1996/com.android.example E/AndroidRuntime﹕ 致命异常:主
进程:com.android.example,PID:1996
java.lang.RuntimeException:未能解析索引6处的属性
位于android.content.res.TypedArray.getLayoutDimension(TypedArray.java:603)
在android.view.ViewGroup$LayoutParams.setBaseAttributes(ViewGroup.java:6423)中
在android.view.ViewGroup$MarginLayoutParams(ViewGroup.java:6591)
位于android.widget.FrameLayout$LayoutParams(FrameLayout.java:735)
在android.widget.FrameLayout.generateLayoutParams(FrameLayout.java:679)中
在android.widget.FrameLayout.generateLayoutParams(FrameLayout.java:62)中
在android.view.LayoutInflater.inflate(LayoutInflater.java:492)
在android.view.LayoutInflater.inflate(LayoutInflater.java:414)
在android.support.v7.internal.view.menu.MenuPopupHelper$MenuAdapter.getView(MenuPopupHelper.java:363)
在android.support.v7.internal.view.menu.MenuPopupHelper.measureContentWidth(MenuPopupHelper.java:212)中
在android.support.v7.internal.view.menu.MenuPopupHelper.tryShow(MenuPopupHelper.java:146)中
在android.support.v7.internal.view.menu.menupopupherper.show(menupopupherper.java:118)中
位于android.support.v7.widget.PopupMenu.show(PopupMenu.java:168)
在com.android.example.GetAdapter$listAdapter$1.onClick(GetAdapter.java:81)
在android.view.view.performClick上(view.java:4756)
在android.view.view$PerformClick.run(view.java:19749)
位于android.os.Handler.handleCallback(Handler.java:739)
位于android.os.Handler.dispatchMessage(Handler.java:95)
位于android.os.Looper.loop(Looper.java:135)
位于android.app.ActivityThread.main(ActivityThread.java:5221)
位于java.lang.reflect.Method.invoke(本机方法)
位于java.lang.reflect.Method.invoke(Method.java:372)
在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)上
位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
我可以这样解决:

将此添加到适配器getView():

ImageView弹出菜单=(ImageView)v.findViewById(R.id.popupMenu);
setTag(getItem(position));
setOnClickListener(MyFragment.popupMenuListener)

这是我的片段:

实现OnClickListener

popupMenuListener=this

@覆盖
公共void onClick(最终视图){
view.post(新的Runnable(){
@凌驾
公开募捐{
显示弹出菜单(视图);
}
});

}

此问题与缺少主题属性有关。
确保你的应用程序主题扩展了
theme.AppCompat

 <style name="AppTheme" parent="@style/Theme.AppCompat" />

在执行以下导入时,我总是出现错误:

import android.support.v7.widget.PopupMenu;
它可以与以下导入一起正常工作:

import android.widget.PopupMenu;

完整答案:

你能发布logcat错误吗?@GoranHoriaMihail done.GetAdapter.java:81这一行就是它崩溃的地方。那行是什么?@GoranHoriaMihail popup.show();是的,这很有意义,您希望在getview()中设置事件,但在onListItemClick()中显示弹出窗口。您现在试图在getview()中显示弹出窗口,这是错误的。虽然这在理论上可以回答问题,但请在此处包含答案的基本部分,并提供链接以供参考。
import android.widget.PopupMenu;