DialogFragment を Back で戻ると InputEventReceiver で警告が出る

概要

DialogFragment を使用した 時に、Back ボタンで DialogFragment を閉じると W/InputEventReceiver: Attempted to finish an input event but the input event receiver has already been disposed. と表示される件の対処方法です。(2016.7.8現在、未解決)

確認環境

  • Compile SDK Version 22
  • Build Tools Version 22.0.1
  • 実行環境 Sony SOV32 Android 6.0, API 23

参考情報

I have this error message in the following scenario: Activity creates a Dialog. The Dialog is assigned a KeyListener. Back Button is pressed, and the Activity+Dialog are closed. Apparently, the Dialog is closed before the "input event" is finished. – Pawel Dec 24 '14 at 16:42

Dialog に KeyListener を登録して、Back ボタンを押下して Activity と Dialog を閉じる。InputEvent が終了する前に Dialog が閉じられると発生している様子。

I have same problem. I have PopupWindow with button (R.id.imageView1). I have callback on that button. I deregister callback when popup is disimissed (popupWindow.setOnDismissListener).

PopupWindow でも同様の問題が発生する様子。DismissListener にて登録されている Listener を削除することによって回避できる様子。

mReceiverPtr == 0 の時 finishInputEvent メソッドで警告をログに出力している。dispose メソッドで mReceiverPtr = 0 としている。

対処方法

Back ボタンの InputEvent が終了する前に DialogFragment が dismiss されるために警告が発生されていると推測される。

どうしたものか…。こういうものと諦めるのが良いか…。