Mam niestandardowy adapter dla mojego widoku listy. Adapter zawiera widok tekstowy i przycisk obrazu. Zaimplementowałem menu podręczne po kliknięciu przycisku obrazu. Wszystko działa dobrze. Ale po wybraniu opcji z menu podręcznego logcat wyświetla komunikat "Próbowano zakończyć zdarzenie wejściowe, ale odbiornik zdarzeń wejściowych już został usunięty" i nic się nie dzieje.Próba zakończenia zdarzenia wejściowego, ale odbiornik zdarzeń wejściowych został już usunięty.
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 interfejsu jest
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();
}
}
Co zrozumiałem z wiadomości jest to, że niektóre rzeczą jest jedzenie zdarzenie przed onMenuItemClick() pobiera wykonania. Używam mojej aplikacji na Android 5.0.1 nexus 5.
Znajduję rozwiązanie dla podobnego problemu od here. Ale nie mam sposobu, aby wykorzystać to podejście do mojego problemu.
Próbowałem używać menu kontekstowego zamiast menu podręcznego, ale wciąż miałem ten sam komunikat "Próba zakończenia zdarzenia wejściowego, ale odbiornik zdarzeń wejściowych już został usunięty" po kliknięciu pozycji menu kontekstowego.
Proszę, pomóżcie mi ... !!
mam ten komunikat o błędzie w następującym scenariuszu: aktywny tworzy dialogowe. Dialogowi przypisano KeyListener. Przycisk Wstecz jest wciśnięty, a okno dialogowe Aktywność + jest zamknięte. Wygląda na to, że okno dialogowe jest zamknięte przed zakończeniem "zdarzenia wejściowego". – Pawel