2

ポップアップ ウィンドウを表示するアクティビティを作成しました。アクティビティが停止すると、次のメッセージがログに出力されます。

10-22 13:36:05.539: E/WindowManager(14865): android.view.WindowLeaked: Activity qnd.papaya.counter.gui.payment.PaymentActivity has leaked window android.widget.LinearLayout{430ac2a0 V.E..... ......I. 0,0-821,306} that was originally added here
10-22 13:36:05.539: E/WindowManager(14865):     at android.view.ViewRootImpl.<init>(ViewRootImpl.java:346)
10-22 13:36:05.539: E/WindowManager(14865):     at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:248)
10-22 13:36:05.539: E/WindowManager(14865):     at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:69)
10-22 13:36:05.539: E/WindowManager(14865):     at android.widget.PopupWindow.invokePopup(PopupWindow.java:1019)
10-22 13:36:05.539: E/WindowManager(14865):     at android.widget.PopupWindow.showAtLocation(PopupWindow.java:850)
10-22 13:36:05.539: E/WindowManager(14865):     at android.widget.PopupWindow.showAtLocation(PopupWindow.java:814)
10-22 13:36:05.539: E/WindowManager(14865):     at qnd.papaya.counter.controller.PaymentPanelController.showPaymentTypesPopup(PaymentPanelController.java:188)
10-22 13:36:05.539: E/WindowManager(14865):     at qnd.papaya.counter.controller.PaymentPanelController.access$2(PaymentPanelController.java:159)
10-22 13:36:05.539: E/WindowManager(14865):     at qnd.papaya.counter.controller.PaymentPanelController$3.onClick(PaymentPanelController.java:197)
10-22 13:36:05.539: E/WindowManager(14865):     at android.view.View.performClick(View.java:4438)
10-22 13:36:05.539: E/WindowManager(14865):     at android.view.View$PerformClick.run(View.java:18422)
10-22 13:36:05.539: E/WindowManager(14865):     at android.os.Handler.handleCallback(Handler.java:733)
10-22 13:36:05.539: E/WindowManager(14865):     at android.os.Handler.dispatchMessage(Handler.java:95)
10-22 13:36:05.539: E/WindowManager(14865):     at android.os.Looper.loop(Looper.java:136)
10-22 13:36:05.539: E/WindowManager(14865):     at android.app.ActivityThread.main(ActivityThread.java:5001)
10-22 13:36:05.539: E/WindowManager(14865):     at java.lang.reflect.Method.invokeNative(Native Method)
10-22 13:36:05.539: E/WindowManager(14865):     at java.lang.reflect.Method.invoke(Method.java:515)
10-22 13:36:05.539: E/WindowManager(14865):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
10-22 13:36:05.539: E/WindowManager(14865):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
10-22 13:36:05.539: E/WindowManager(14865):     at dalvik.system.NativeStart.main(Native Method)

したがって、アクティビティの onPause() メソッドでポップアップを閉じたいと思います。

アクティビティで表示されているすべての PopupWindows への参照を取得する方法はありますか? 何かのようなもの:

@Override
protected void onPause() {
    super.onPause();
    findPopupWithTag("MY_POPUP").dismiss(); // <--- IS THERE A SIMILAR METHOD?
}

コードをクリーンでシンプルに保つために、ポップアップへの明示的な参照を保持したくありません...

4

1 に答える 1