2013-10-03 32 views
1

我在寫一個Android應用程序,其中有一段代碼爲用戶創建了一個插入大量金錢的方法。它包括根據其位置設置貨幣符號和小數點標記,並在用戶點擊點或逗號時將焦點從整數文本框跳轉到小數文本框。如何在Android中創建可重用的代碼片段?

由於我想在我們的應用程序中的幾個地方重新創建這段代碼,我想保持它與視圖的其餘部分分開。所以,我創建了一個單獨的XML文件,並在其中我不斷的貨幣等的設置我再「進口」,它在一個XML文件中像這樣的方法,一個單獨的Java文件,它充氣:

<com.example.android.ui.widget.AmountWidget 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content"> 
</com.example.android.ui.widget.AmountWidget> 

的現在出現問題時,我需要在一個頁面中多次使用此代碼。由於TextEdit框有一個id,所以如果我多次使用這個代碼,這個id將被重用,並且它實際上變得無效。

所以我的問題就變成了;我怎樣才能以一種方式重用一段代碼,以便每次調用這段代碼時都可以爲它設置id?

+0

您是否在代碼中添加了包含技巧?如果是,它怎麼樣? – JJ86

回答

2

在您的xml代碼上使用<include/>。這裏有一個official example

編輯

This link提供更多信息,以覆蓋包括佈局的ID。

EDIT 2

你最後的評論後,即使我不知道你的項目的完整結構,這是我的想法:你可以在XML文件來覆蓋Layoutid,並在代碼你可以用開關盒檢查EditText的父母。

... 
<include layout="@layout/your_layout" 
     android:id="@id/layout1"/> 
<include layout="@layout/your_layout" 
     android:id="@id/layout2"/> 
<include layout="@layout/your_layout" 
     android:id="@id/layout3"/> 
... 
<include layout="@layout/your_layout" 
     android:id="@id/layoutX"/> 
... 

然後在您的代碼中,指向EditText後使用case/switch。順便說一句,如果你只有幾行你可以避免使用include;相反,如果您有很多線路,請使用ListView

+0

感謝您的提示。不過,我有兩個問題。 1)我看到我可以重寫id,但據我所見,我只能覆蓋包含的部分的id,而不是包含在您包含的部分中的單個EditText框。和問題2)如果我包含xml,它是否也包含與它一起的java代碼(例如設置貨幣符號)? – kramer65

+0

還有一件事:碎片呢,在這種情況下會是更好的主意嗎(對碎片沒有任何經驗)? – kramer65

+0

@ kramer65 1)當你使用include時,包含了佈局的所有內容; 2)不,當然java代碼是各種各樣的,因爲它是由你來管理你的班級的佈局;你在xml文件上做的所有配置當然是導入的; FRAGMENT)你可以在Fragment上使用include,但是你不必在佈局中包含一個Fragment xml,這不是必須的! – JJ86

相關問題