8

string.xml から文字列を取得したい。私はこれを行う方法を知っています。しかし、私の問題は別のものです。毎回変更される文字列変数があり、それが変更されるたびに、strings.xml を見て、その文字列変数が Strings.xml に存在するかどうかを確認し、テキストを取得します。

例えば:

String title="sample title" \\ which changes
String city= "sample city"
String s = getResources().getString(R.string.title);

3行目:タイトルは文字列で、Strings.xmlに文字列という名前の「タイトル」はありません。どうすればこれを行うことができますか? 私を助けてください

4

4 に答える 4

11

私が知る限り、使用できますpublic int getIdentifier (String name, String defType, String defPackage)。ただし、その使用はお勧めできません。

それを使用するには(私はそれを行っていませんが、メソッドについて一度読んだことがあります)、おそらく次のことが必要になるでしょう:

int identifier = getResources().getIdentifier ("title","string","your.package.name.here");
if (identifier!=0){
     s=getResources().getString(identifier);
}
else{
    s="";//or null or whatever
}
于 2013-05-08T18:29:04.967 に答える
3

動的キーから文字列を取得するためにできることの 1 つは、2 つの文字列配列を作成し、それらを HashMap に配置することです。

配列.xml:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string-array name="title_keys">
        <item>title1</item>
        <item>title2</item>
        <item>title3</item>
    </string-array>
    <string-array name="title_values">
        <item>Real Title 1</item>
        <item>Real Title 2</item>
        <item>Real Title 3</item>
    </string-array>
</resources>

そしてあなたのコードで:

String[] titleKeys = getResources().getStringArray(R.array.title_keys);
String[] titleValues = getResources().getStringArray(R.array.title_values);

HashMap<String, String> titles = new HashMap<String, String>();

for(int i = 0; i < titleKeys.length; i++) {
    titles.put(titleKeys[i], titleValues[i]);
}

最後に、動的キーからタイトルを取得するには:

titles.get(titleFromSomewhere);
于 2013-05-12T03:39:31.557 に答える
1

あなたはしません。定数文字列には、strings.xml を使用します。あなたがやりたいことは、2 つのことのうちの 1 つです。

1)文字列を一定にする必要がありますが、いくつかのオプションの 1 つです (たとえば、国のリスト内の 1 つの項目)。この場合、strings.xml にすべてのオプションを配置し、現在使用しているオプションを int に保持します。実際の文字列を取得する必要がある場合は、getString() を使用します。

2)実際には、任意の文字列にすることができます (たとえば、ユーザーが入力した名前)。その場合、strings.xml にはまったく含まれず、String 変数を使用するだけです。

于 2013-05-08T18:26:22.627 に答える
1

これはできません。リソースは R.java で一意の int に変換され、実際の文字列リソースを検索するために使用されます。

実際R.string.titleには のようなもの0x78E84A34です。

HashMap<String,String>短い「キー」文字列の完全な文字列を検索するために、文字列を管理する独自のクラスを作成できます。

于 2013-05-08T18:26:32.717 に答える