2016-04-30 40 views
1

我的佈局涉及很多按鈕,其所有屬性除android:text="button_name"屬性外都完全相同。爲styles.xml文件中的所有按鈕聲明一個通用的onClick屬性

這些按鈕的主題是定義爲在styles.xml如下

<style name="Core.ButtonStyleSmall"> 
    <item name="android:layout_width">16sp</item> 
    <item name="android:layout_height">16sp</item> 
    <item name="android:layout_marginLeft">8sp</item> 
    <item name="android:layout_marginBottom">6sp</item> 
    <item name="android:textSize">10sp</item> 
    <item name="android:onClick">takeToApplication</item> 
</style> 

我想實現是常見的onClick聲明所有這些按鈕的,因此我在這裏補充,但它似乎沒有工作。

在我的java文件中,它仍然會提示說Method'takeToApplication(android.view.View)' is never used

這樣做的正確方法是什麼?請幫助我解決這個問題。

+0

無論如何,你可能會得到。 Java對佈局XML一無所知,所以它不會知道你的方法將通過反射來調用。這只是一個警告。更大的問題是:當用戶點擊按鈕時,該方法是否被調用? 'onClick'是一種不尋常的屬性,可以放入一個風格資源,雖然我認爲它應該可以工作,但如果出現問題,我不會感到震驚。 – CommonsWare

+0

如果您在layout.xml文件中聲明瞭'onClick',則警告消失,因此我認爲它不起作用。不過,我會嘗試運行它。 –

+0

Lint可能知道爲'onClick'屬性檢查佈局XML文件並自動取消警告。但是可能會有其他一些情況錯過(例如,您在字符串資源中擁有方法名稱)。 – CommonsWare

回答

2

因爲沒有人有一個明確的答案,我會繼續和回答它自己:

任何XML屬性可以在styles.xml文件被宣佈爲需要共享任何共同屬性的所有視圖。因此,onClick在那裏聲明時工作得很好。

它給你一個警告之前說Method 'name_of_method' is never used,但這是因爲資源文件的調用發生在運行時。所以警告可以安全地忽略,它不會造成任何問題。