ActionMode使用するRecyclerViewをPopupWindow内で使おうとしたら、どうやってもActionModeが起動しなかった。
うんともすんとも言わない。
デバッグ実行でトレースしてみたが、startActionModeで起動した時に渡したコールバックがどうしても呼ばれない。
Android Emulator 4.1, 5.0, 7.1.1で実験したが、全てダメだった。
一応書いておくが、PopupWindow以外では正常に動作する。
AlertDialog上でも動作した。
原因不明だが、PopupWindowはActivityとは違う場所にあるのではと推測する。
そして、ActionModeはActivity上でしか使えない?みたいな?
少し話は違うが、PopupWindow上のViewをAnchorとして、ネストしたPopupWindowを起動すると、必ずクラッシュする。
E/AndroidRuntime: FATAL EXCEPTION: main android.view.WindowManager$BadTokenException: Unable to add window
-- token android.view.ViewRootImpl$W@b1ae1f98 is not valid; is your activity running? at android.view.ViewRootImpl.setView(ViewRootImpl.java:585) at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:326) at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:224) at android.view.WindowManagerImpl$CompatModeWrapper.addView(WindowManagerImpl.java:149) at android.view.Window$LocalWindowManager.addView(Window.java:547) at android.widget.PopupWindow.invokePopup(PopupWindow.java:988) at android.widget.PopupWindow.showAsDropDown(PopupWindow.java:897) at android.widget.PopupWindow.showAsDropDown(PopupWindow.java:860) 以下略
これは、Activity上のViewでないとPopupWindowが起動できないということのように見える。
そして、PopupWindowはActivity上ではない?
つまり、そういう事??
どういう事?
よし、別なアプローチにしよう。