10

XMLドキュメントで変数を使用する方法をどこかで読みました。彼らはそれがとてもシンプルだと言いました。Androidのstrings.xmlファイルでそのように使用することに成功しました。突然アンドロイドが解析を停止し、変数のように扱うのをやめるまで、私は一日中それを使用していました。

私はこのようにそれを使用しました:

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

getApplicationContext().getString(R.strings.another_string); を介して Java でアクセスします。

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

出力では、次のような文字列を受け取っていました。

string1 trolololo

そして今、私は次のものだけを受け取ります:

{$some_string} trolololo

誰が何が間違っているのか分かりませんか?Android の XML が標準の XML とは異なる可能性があることは知っていますが、以前は機能していました。Awww... アドバイスありがとうございます。

4

4 に答える 4

21

文字列値をパラメーターとして渡したいと仮定すると、another_string文字列はその引数を受け取るように適切にフォーマットされておらず、それを使用しようとすると、出力は{$some_string} trolololo.

String.format(String, Object...)を使用して文字列をフォーマットする必要がある場合は、フォーマット引数を文字列リソースに入れることで実行できます。

<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 の公式ドキュメント (こちら) をご覧ください。

于 2012-07-16T23:16:01.760 に答える
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

于 2012-07-16T20:13:34.183 に答える
1

または、直接使用することもできますgetResources().getString(R.string.activity_title, arg)

例えば

<resources>
   <string name="postfix_title">%s Gallery</string>
</resources>

そして、単純に、

String arg = "Colors";
String title = getResources().getString(R.string.postfix_title, arg);

これにより、titlevalue が含まれますColors Gallery

于 2019-12-03T09:23:52.437 に答える
0

あなたが最初に行った最初のことが中括弧でどのように機能したかはわかりませんが、以前にこの問題に遭遇し、解決策を見つけることができませんでした..

今私がしているのは、これらの文字列を個別に呼び出して、実行時に連結することです。

于 2012-07-16T20:47:04.747 に答える