365連休

にわかのandroidとかの開発メモ。

Android Studio 4.2 PopupWindowからActionModeを起動できない。ActionMode does not work in PopupWindow.

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上ではない?

 

 

つまり、そういう事??

 

どういう事?

 

 

よし、別なアプローチにしよう。