2012-07-16 10 views
6

どこかXML文書で変数を使用する方法を読んでいます。彼らはそれは非常に簡単だと私はそれがあったと言いました。私はそれをAndroid strings.xmlファイルでうまく使用しました。私は突然アンドロイドがそれを解析するために停止し、それを変数のように扱うために停止するまで、それを一日中そのように使用していました。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)。

string1 trolololo 

、今、私は受信のみ:

{$some_string} trolololo 

誰もが何が間違っている任意のアイデアを持っていますか?私は次のように文字列を受信するために使用される出力で

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

私は、AndroidのXMLは標準のXMLとは異なるかもしれないが、ITは使役することを知っている。 Awww ...アドバイスありがとう。

+0

あなたのプロジェクトをきれいにしてからもう一度 '実行 'してみてください。 –

+0

ええええええええええええええええええええええええええええええええええと、これは、intやint []のような他の型でもうまくいけば、私は疑問に思っています – Fraggles

答えて

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')。 –

+0

[DevGuide](http://developer.android.com/guide/topics/resources/string-resource。html#String)は、XMLリソース参照で '@ string/string_name'と表示しています。 –

+1

はい、これはエラーをスローするXMLファイルです。私はそれをロックする前にコメントに編集することはできませんでした。 –

0

今、私は何をすべきか、私はあなたがやった最初の最初のものは、中括弧で働いていたかどうかはわかりませんが、私は前にこの問題に遭遇してきたし、解決策を見つけることができませんでした。..

これらの文字列を別々に呼び出して、実行時に連結します。

+0

中括弧を使用して、このローカルドキュメントは、明らかに私がそれらを連結することを可能にしました。 – Garet

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 Developersの公式ドキュメントhereをご覧ください。

+0

返信いただきありがとうございます。私はすでに文字列をフォーマットするこのメソッドを見てきました(以前はあなたが投稿したAndroid Dev。documentationリンク上の解決策を探していました)。そして - はい - それは私の問題を解決するだろうが、私はstrings.xmlファイルにこれらの文字列をすべて入れ、それらを準備して(連結し)、実行時に事前準備された文字列の中でこれらの文字列を使用したい。私が理解できない1つの理由は、それがなぜ機能していたのか、そして今はそうではありませんか? – Garet

関連する問題