tag manager google español android listview popupmenu

android - google tag manager español



Se intentó finalizar un evento de entrada, pero el receptor del evento de entrada ya se ha eliminado (1)

Tengo un adaptador personalizado para mi vista de lista. El adaptador contiene una vista de texto y un botón de imagen. He implementado un menú emergente al hacer clic en el botón de imagen. Todo está funcionando bien. Pero al seleccionar las opciones del menú emergente, Logcat muestra un mensaje de una sola línea "Se intentó eliminar un evento de entrada pero el receptor del evento de entrada ya se ha eliminado" y no ocurre nada.

public class MyAdapter extends ArrayAdapter<String> { public MyAdapter(Context context, int resourceId) { super(context, resourceId); } public MyAdapter(Context context, int resourceId, List<String> 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; } }

La interfaz de onclicklistener es

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

Lo que entendí del mensaje es que algo está comiendo el evento antes de que onMenuItemClick () se ejecute. Estoy ejecutando mi aplicación en nexus 5 android 5.0.1.

Encuentro una solución para un tipo similar de problema desde here . Pero no entiendo cómo usar este enfoque para mi problema.

Intenté usar el menú contextual en lugar del menú emergente, pero aún tenía el mismo mensaje "Intenté finalizar un evento de entrada pero el receptor del evento de entrada ya se había eliminado" después de hacer clic en el elemento del menú contextual.

Por favor, ayúdame...!!


He golpeado este problema desde otro ángulo; tratando de lanzar un servicio desde un menú. Por defecto, el mensaje de depuración no es demasiado relevante. Mi solución fue eliminar los filtros en logcat y luego recibí otro mensaje de que no podía iniciar el servicio en primer lugar (olvidé ponerlo en mi archivo de manifiesto).

En su caso, es posible que deba ajustar la visualización de tostadas en una clase:

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

y llámalo a través de un objeto Handler :

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

O, mejor aún, utilizando el método Handler.postDelayed() .

HTH,