是否可以在其他活动中从其按钮处理程序中解除PopupWindow?

时间:2012-02-01 03:17:57

标签: android

我没有设计这个,但是情况就是这样:有一个带有按钮的PopupWindow。按钮处理程序与创建PopupWindow的Activity处于不同的活动。我想知道是否有一种方法可以使用View param到按钮处理程序来访问PopupWindow,以便在点击按钮时让它 dismiss()

到目前为止,我已经能够使用一系列 getParent()来迭代到包含的PopupWindow。但是,当我这样做时,它说它是一个“PopupWindow $ PopupViewContainer”(PopupWindow本身不是从View派生的;它是从Object派生的)

有什么方法可以用它来访问实际的PopupWindow,所以我可以调用它的 dismiss()方法吗?

提前致谢!

2 个答案:

答案 0 :(得分:0)

弹出窗口的

:重复Popup Window 只看到解决方案。

如果你在谈论解雇();

public void dismiss()

处理弹出窗口。只有在showAsDropDown(android.view.View)执行后才能调用此方法。

答案 1 :(得分:0)

  

我没有设计这个......

如果您正在处理它,那么我建议您(稍微)更改架构以使其正确。

以下是我的建议:(我认为处理程序的代码在另一个活动中,因为这两个活动可以有弹出窗口吗?)

  • 为可以拥有弹出窗口的所有活动提取基础超类(使其成为abstractextends Activity,并且所有具体活动都将扩展该类),并放入这个中的处理程序代码。

  • 在该基本活动中保留对父PopupWindow的引用,因此您始终可以从处理程序或其他任何可能需要它的内容中访问它(保持该引用为私有以保留封装)。