2016-03-11 49 views
0

在我的應用程序中,我想從xml加載不同的字符串值。 幾乎像不同的語言。 我有多個客戶訪問相同的應用程序,但他們想要不同的標籤和樣式。 (一個例子是我有一個待辦事項列表選項卡,客戶端A希望它被稱爲日常任務,客戶端B希望將其稱爲任務,客戶端C需要活動列表,所有3個客戶端具有相同的功能,但需要不同的文本 。我不想爲每個客戶端創建一個新應用程序,這將是維護等等的噩夢,我也不想在每次我想更改標籤文本時都發出if語句。理想情況下,我想要的是單個應用程序爲每個客戶端加載不同的字符串是否有可能在Android中加載不同的字符串(xml)值

+0

你的意思是ü要在不同語言的應用程序的字符串值負荷? –

回答

4

您可以爲每個客戶端創建不同的buildType和/或productFlavor對於每個buildType/productFlavor,您可以定義一個單獨的源代碼集,這意味着每個buildType/productFlavor可以包含一個不同的strings.xml。字符串的密鑰必須相同,但每個客戶端可以有不同的字符串g文件在其buildType/productFlavor中。

約buildTypes/productFlavors更多信息:

http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Build-Variants

http://developer.android.com/tools/building/configuring-gradle.html

例如你定義兩種口味:

android { 
... 
defaultConfig { ... } 
signingConfigs { ... } 
buildTypes { ... } 
productFlavors { 
    clientA { 
    } 
    clientB { 
    } 
    } 
} 

然後你就可以在你的項目中爲每個客戶建立一個sourceset:

src/ 
|-> main (contains the common code/strings) 
|-> clientA 
|  |-> res 
|   |-> values 
|    |-> strings.xml 
|-> clientB 
      |-> res 
       |-> values 
        |-> strings.xml 

在每strings.xml中,您可以添加字符串爲您的客戶。定義的字符串也將與主源代碼集的字符串合併。

你如何告訴你的應用程序使用什麼SRC。 Main/clientA/clientB?

您可以在Android Studio中構建選擇builtType/productFlavor。

要上的文件從一個特定的香味,點擊基礎上 變種IDE窗口的左側,選擇要在 修改生成變種面板的味道,如圖2的Android工作室可能在 中顯示來自「構建變體」面板中選定的 之外的其他風格的源文件錯誤,但這不會影響構建的 的結果。

http://developer.android.com/tools/building/configuring-gradle.html#workBuildVariants

+0

你如何告訴你的應用程序使用什麼SRC。在Main/clientA/clientB之間? –

+0

通過切換BuildVariant。 http://developer.android.com/tools/building/configuring-gradle.html#workBuildVariants – Christopher

+0

有沒有一種方法來實現這個沒有建立味道? –

相關問題