2012-07-16 48 views
6

某處我閱讀了如何在XML文檔中使用變量。他們說這很簡單,我想是的。我在Android的strings.xml文件中成功地使用了它。我整天都在使用它,直到android突然停下來解析它並停下來將它當作一個變量來對待它。strings.xml中的Android變量

我用它以這種方式:

<resources> 
<string name="some_string">string1</string> 
<string name="another_string"> {$some_string} trolololo </string> 
</resources> 

和在Java訪問它通過:getApplicationContext()的getString(R.strings.another_string);

getApplicationContext().getString(R.strings.another_string); 

在我用來接收字符串,如輸出:

string1 trolololo 

,現在我只收到:

{$some_string} trolololo 

沒有人有任何的想法有什麼不好?我知道Android的XML可能與標準的XML不同,但它用於工作。 Awww ...感謝您的任何建議。

+0

清理完項目後再試,再次運行。 – 2012-07-16 20:11:08

+0

嗯......我想知道,如果這也適用於其他類型,如int或int [] – Fraggles 2014-02-11 12:32:55

回答

7

這將解決你的問題:

<resources> 
    <string name="some_string">string1</string> 
    <string name="another_string">@string/some_string trolololo</string> 
</resources> 

現在getApplicationContext().getString(R.strings.another_string)的輸出將是string1 trolololo

+0

有趣的是,當我嘗試這個,我得到一個錯誤,沒有資源發現匹配在給定的名稱'another_string',值爲'@ string/some_string trolololo')。' – 2012-07-16 20:20:32

+0

[DevGuide](http://developer.android.com/guide/topics/resources/string-resource。html#String)表示在XML資源引用中'@ string/string_name' – 2012-07-16 20:31:16

+1

是的,它是拋出錯誤的XML文件。我沒有設法在鎖定之前及時將它編輯到評論中。 – 2012-07-16 20:32:17

0

我不知道你怎麼做了第一件事最初是用大括號工作,但我碰到的本次發行前,無法找到解決辦法..

現在我做什麼在運行時分別調用這些字符串並將它們連接起來。

+0

使用大括號我可以引用某些字符串值這本地文件,顯然這讓我連接它們。 – Garet 2012-07-17 05:20:50

18

假設你想傳遞一個字符串值作爲another_string中的一個參數,那麼你的字符串沒有很好的格式化來接收該參數,如果你嘗試使用它,你的輸出將是{$some_string} trolololo

如果需要使用的String.format來格式化字符串(字符串, 對象...),那麼你可以把你的格式參數在 字符串資源這樣做。現在

<resources> 
<string name="some_string">string1</string> 
<string name="another_string">%1$s trolololo</string> 
</resources> 

您能夠以參數字符串從您的應用格式是這樣的:

String arg = "It works!"; 
String testString = String.format(getResources().getString(R.string.another_string), arg); 
Log.i("ARG", "another_string = " + testString); 

否則,輸出字符串將another_string = It works! trolololo

看看Android開發者官方文檔,here

+0

感謝您的回覆。我已經看到這種方法來格式化字符串(之前,我正在尋找您發佈的Android Dev。文檔鏈接上的解決方案)。並且 - 是的 - 這將解決我的問題,但我想將所有這些字符串放入strings.xml文件中,在那裏準備(連接)它們,並在運行時預先準備好的字符串中使用它們。我無法理解的一件事是爲什麼它正在工作,現在不是? – Garet 2012-07-17 05:19:04