以编程方式获取Android中的onClick属性的XML按钮方法

问题描述:

在Android中,在按钮的XML onClick属性中指定方法会导致在按钮单击时调用该方法。鉴于按钮视图,有没有办法找出哪些方法将被编程调用?我已经查看了Views的可用公共方法,但我无法找到任何有关获取视图属性的信息。我知道Android为android.view.View$1类创建了一个onClick监听器,用于以这种方式定义按钮,并且我希望可能有一种方法可以使用反射来查找我之后的方法。以编程方式获取Android中的onClick属性的XML按钮方法

编辑:我没有建立一个应用程序,而是一个观看按钮点击的库。因此,我想弄清楚将要调用什么方法。我已经知道如何在代码中使用传统的onClick监听器来处理按钮,因此onClick的XML按钮是我正在处理的最后一个案例。

虽然它是可能,你真的不应该这样做。

它会让你的应用程序依赖于框架的内部(私有!)实现,这是一个糟糕的主意。您的应用可能会停止在未来的Android版本中工作。或者甚至仅仅在某些设备上,如果设备制造商在内部改变了某些东西(他们被允许这样做)。像变化的变量名称一样简单可能会使您的反射代码绊倒。

应该有更好的方法来实现你的目标。

编辑:与增加的信息,和一些额外的思想,我意识到,你也许能够做到这一点没有反思。您应该能够在Resources.getLayout(int id)的帮助下解析XML布局,找到适当的按钮ID:s并读取每个值的值。

+0

你提到它可能 - 如何?我已经在我的代码中使用了一些私有的Android API。此外,我已经更新了我正在尝试做的事情。 –

那么,您的问题来看我假设你知道无论是XML和分配onClickListerners编程方法...

,但我不明白你为什么会想以编程方式更改onclick属性。

如果您想要动态更改按钮被按下时调用的方法,那么您可以通过多种方式实现,最简单的方法是简单地使用状态,然后在onClick方法中检查该状态并相应地采取行动......

有可能是一个更好的方法来实现这一目标,但这是你正在尝试做什么?

+0

我不想更改属性,只需获取方法名称即可。我正在研究一个图书馆,我想看看按钮被点击的时间。 –