尝试完成输入事件但输入事件接收器已经处理完毕

我的listview有一个自定义适配器。 适配器包含textview和图像按钮。 单击图像按钮后,我实现了一个popup菜单。 一切都很好。 但是当从popup菜单中选择选项时,logcat显示单行消息“尝试完成输入事件但输入事件接收器已经被处理”并且没有发生任何事情。

public class MyAdapter extends ArrayAdapter { public MyAdapter(Context context, int resourceId) { super(context, resourceId); } public MyAdapter(Context context, int resourceId, List string) { super(context, resourceId, string); } @Override public View getView(int position, View convertView, ViewGroup parent) { View v = convertView; if(v == null) { LayoutInflater inflater = LayoutInflater.from(getContext()); v = inflater.inflate(R.layout.adapter_layout, null); } String str = getItem(position); if(str != null) { TextView textView = (TextView)v.findViewById(R.id.editText1); textView.setText(str); ImageButton button = (ImageButton)v.findViewById(R.id.imageButton1); button.setOnClickListener(new Custom_Adapter_Button_Click_Listener(getItemId(position), getContext())); } return v; } } 

onclicklistener接口是

 public class Custom_Adapter_Button_Click_Listener implements OnClickListener, OnMenuItemClickListener { long position; Context context; public Custom_Adapter_Button_Click_Listener(long id, Context appcontext) { position = id; context = appcontext; } @Override public boolean onMenuItemClick(MenuItem item) { AdapterContextMenuInfo info = (AdapterContextMenuInfo)item.getMenuInfo(); int index = info.position; Log.d("ItemClicked", "selected index : " + index); switch(item.getItemId()) { case R.id.option : Toast.makeText(context, "Selected index : " + index, Toast.LENGTH_SHORT).show(); return true; default : Toast.makeText(context, "Default", Toast.LENGTH_SHORT).show(); return false; } } @Override public void onClick(View v) { PopupMenu popup = new PopupMenu(context, v); MenuInflater popupInflater = popup.getMenuInflater(); popupInflater.inflate(R.menu.contextmenu, popup.getMenu()); popup.show(); } } 

我从消息中理解的是,在onMenuItemClick()获得执行之前,有些事情正在吃事件。 我在nexus 5 android 5.0.1上运行我的应用程序。

我从这里find了类似问题的解决方案。 但我没有得到如何使用这种方法来解决我的问题。

我尝试使用上下文菜单而不是popup菜单,但是在点击上下文菜单项后,我仍然有相同的消息“尝试完成输入事件但输入事件接收器已被处理”。

请帮帮我…!!

  • PopupMenu PopupWindow $ PopupViewContainer泄漏
  • Android自定义下拉菜单/popup菜单
  • Android ListView中的popup菜单问题
  • 试图完成一个input事件,但input事件接收器已经被处置
  • 像在ICS中一样在android 2.x中创建下拉菜单的最佳方法
  • 如何改变android中的popup菜单的文本颜色和大小?
  • Android的popupmenu位置
  • 如何强制PopupMenu重叠锚?
  • 我从另一个角度来看这个问题; 尝试从菜单启动服务。 默认情况下,调试消息不太相关。 我的解决方案是消除logcat中的filter然后我得到另一条消息,它首先无法启动服务(我忘了把它放在我的清单文件中)。

    在您的情况下,您可能需要将toast显示包装到类中:

     public class DisplayToast implements Runnable { private final Context mContext; private final String mText; public DisplayToast(Context mContext, String text) { this.mContext = mContext; mText = text; } public void run() { Toast.makeText(mContext, mText, Toast.LENGTH_SHORT).show(); } } 

    并通过Handler对象调用它:

     mHandler.post(new DisplayToast(this, "Epic message!")); 

    或者,更好的是,使用Handler.postDelayed()方法。

    HTH,