Ho un adattatore personalizzato per il mio listview. L'adattatore contiene una vista testuale e un pulsante immagine. Ho implementato un menu popup cliccando sul pulsante dell'immagine. Tutto funziona bene. Ma quando si selezionano le opzioni dal menu popup, logcat visualizza un messaggio a riga singola "Tentativo di terminare un evento di input ma il ricevitore di eventi in ingresso è già stato eliminato" e non accade nulla.Tentativo di terminare un evento di input ma il ricevitore di eventi in ingresso è già stato disposto
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;
}
}
onclicklistener interfaccia è
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();
}
}
Quello che ho capito dal messaggio è che qualche cosa sta mangiando l'evento prima onMenuItemClick() viene eseguito. Sto facendo funzionare la mia app su Android 5.0 di nexus 5.
Trovo una soluzione per questo tipo di problema da here. Ma non sto ottenendo come usare questo approccio al mio problema.
Ho provato a utilizzare il menu di scelta rapida invece del menu popup, ma ho ancora lo stesso messaggio "Tentativo di terminare un evento di input ma il destinatario dell'evento in ingresso è già stato eliminato" dopo aver fatto clic sulla voce del menu di scelta rapida.
Per favore aiutatemi ... !!
ho questo messaggio di errore nel seguente scenario: attività crea una finestra di dialogo. La finestra di dialogo è assegnata a KeyListener. Il pulsante Indietro viene premuto e la finestra di dialogo Attività + viene chiusa. Apparentemente, la finestra di dialogo viene chiusa prima che "l'evento di input" sia terminato. – Pawel