2015-11-01 78 views
2

在Android中,在按鈕的XML onClick屬性中指定方法會導致在按鈕單擊時調用該方法。鑑於按鈕視圖,有沒有辦法找出哪些方法將被編程調用?我已經查看了Views的可用公共方法,但我無法找到任何有關獲取視圖屬性的信息。我知道Android爲android.view.View$1類創建了一個onClick監聽器,用於以這種方式定義按鈕,並且我希望可能有一種方法可以使用反射來查找我之後的方法。以編程方式獲取Android中的onClick屬性的XML按鈕方法

編輯:我沒有建立一個應用程序,而是一個觀看按鈕點擊的庫。因此,我想弄清楚將要調用什麼方法。我已經知道如何在代碼中使用傳統的onClick監聽器來處理按鈕,因此onClick的XML按鈕是我正在處理的最後一個案例。

回答

0

雖然它是可能,你真的不應該這樣做。

它會讓你的應用程序依賴於框架的內部(私有!)實現,這是一個糟糕的主意。您的應用可能會停止在未來的Android版本中工作。或者甚至僅僅在某些設備上,如果設備製造商在內部改變了某些東西(他們被允許這樣做)。像變化的變量名稱一樣簡單可能會使您的反射代碼絆倒。

應該有更好的方法來實現你的目標。

編輯:與增加的信息,和一些額外的思想,我意識到,你也許能夠做到這一點沒有反思。您應該能夠在Resources.getLayout(int id)的幫助下解析XML佈局,找到適當的按鈕ID:s並讀取每個值的值。

+0

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

0

那麼,您的問題來看我假設你知道無論是XML和分配onClickListerners編程方法...

,但我不明白你爲什麼會想以編程方式更改onclick屬性。

如果您想要動態更改按鈕被按下時調用的方法,那麼您可以通過多種方式實現,最簡單的方法是簡單地使用狀態,然後在onClick方法中檢查該狀態並相應地採取行動......

有可能是一個更好的方法來實現這一目標,但這是你正在嘗試做什麼?

+0

我不想更改屬性,只需獲取方法名稱即可。我正在研究一個圖書館,我想看看按鈕被點擊的時間。 –

相關問題