Android 開発、難しいですね。
知ってました?Android の PopupWindow 作るの難しいの。
Problems creating a Popup Window in Android Activity
タイミングが速すぎるんですよ。何このノウハウ?
でね、PopupWindow 破棄するのも、難しいの知ってました?
PopupWindow.dismiss() なんですがね、PopupWindow.isShowing() == true じゃないと、破棄できないんですよ。迅速にUIでポップアップの表示と破棄をボタン連打で繰り返してると、ゴーストウィンドウが溜まりまくるんですよwwww
何が起きてるかっていうと、PopupWindow が表示しきれる前に破棄をUIから指示できるんです。
そうすると
PopupWindow.isShowing() == false 時に破棄関数が呼ばれて、dismiss() できないから、PopupWindow のインスタンスは生きたまま破棄できない状態でスルーですわ。
どうすればいいか?
private void purgePopup( PopupWindow pw ) { if( pw == null ) return; if( pw.isShowing() ) { pw.dismiss(); } else { final PopupWindow oldWindow = pw; new Timer().schedule(new TimerTask(){ @Override public void run() { getActivity().runOnUiThread(new Runnable(){ public void run() { oldWindow.dismiss(); } }); } }, 100); } }こんな感じで対処したら、うまくいきました。ぼぇー