Questo non è correlato al tuo lavoro.
Il menu di overflow è implementato da PopupWindow. Quando l'utente tocca per chiudere PopupWindow, l'evento ACTION_DOWN si è accodato alla coda messaggi dell'app. Quindi viene consegnato a View attraverso la classe ViewPostImeInputStage e infine ViewPostImeInputStage invia questo evento di input al listener onTouchEvent di PopupWindow.
@Override
public boolean onTouchEvent(MotionEvent event) {
final int x = (int) event.getX();
final int y = (int) event.getY();
if ((event.getAction() == MotionEvent.ACTION_DOWN)
&& ((x < 0) || (x >= getWidth()) || (y < 0) || (y >= getHeight()))) {
dismiss();
return true;
} else if (event.getAction() == MotionEvent.ACTION_OUTSIDE) {
dismiss();
return true;
} else {
return super.onTouchEvent(event);
}
}
dissmiss() provare a chiudere PopupWindow e PopupWindow :: onDetachedWindow chiamano WindowInputEventReceiver :: Dispose() prima.
E quindi ViewPostImeInputStage chiama WindowInputEventReceiver :: finishInputEvent per terminare l'evento ACTION_DOWN. Tuttavia, l'istanza di WindowInputEventReceiver è già eliminata, quindi invia messaggi di avviso.
È possibile eseguire il debug in base al punto di interruzione. apri InputEventReceiver.java (necessita del codice sorgente Android su framework/base /) e imposta il punto di interruzione nel metodo di smaltimento.
È un avviso e non fa parte della tua app. Sembra un problema in Android stesso. Dovresti essere in grado di ignorarlo in modo sicuro –
stai usando ActionBar Sherlock? –
@JustinV. Sto usando Android di serie per questo. – alexismorin