2011-09-11 20 views
0

だから、これは非常に難しいと思います。スピナーから選択した値を保存するには、デバイスの言語が変更された場合に変更する必要がありますか?

私はすべての手段とすべての知識を試してきたので、すべてのウェブとこのサイトを検索した後、私は質問しなければなりません。ここで

は契約です: ミツバチ 鳥 リス

値がされるスペイン語:

abejas

私は(英語)の値が言うように持っているスピナーを持っていますpajaros ardillas

私は実行時に、ファイルからのスピナーは

<resources> 
    <string name="bees">abejas</string> 
    <string name="birds">pajaros</string> 
    <string name="squirrels">ardillas</string> 
    <string name="other_species">otra especie</string> 
</resources> 

問題は、私は保存するべきではないということです-ES値

store.xml

<resources> 
    <string name="bees">bees</string> 
    <string name="birds">birds</string> 
    <string name="squirrels">squirrels</string> 
    <string name="other_species">other species</string> 
</resources> 

やフォルダの下にstore.xml

と呼ばれますユーザーが選択した実際の値です。デバイスの言語を変更すると、保存された値は別の言語になるためです。

私は、ユーザーが選択した文字列値の一意のIDを取得する方法を考え、res.getIdentifierを使用してIdと文字列リソースの名前を取得しました。それからデータベースのリソースの名前を保存します。言語が変更された場合、その名前に基づいて値を見つけることができます。

は今、res.getIdentifierは限り値は、名前、すなわちと同じであったとして、働いていた:

value "bees", name="bees" (works) 
    value "bees", name="abejas" (don't work) 
    value "other_species", name="other species" (don't work) 

をだから私は、XML内の文字列の名前を取得することができる方法があり、値から?

もう1つの回避策がありますか?

答えて

2

文字列ではなくIDでスピナーを埋め、カスタムアダプターを使用して文字列を表示できます。そうすれば、ロジックは言語に依存しません。

+0

はあなたの提案のためにありがとうございましたが、どのように私はまさにこれを実現することができますか?スピナーにIDを記入すると、出現すべき文字列の代わりに表示されると思います。それに加えて、私はスピナーにアダプターを記入することを学んだので、私は両方を分ける方法を知らない。しかし、私はそれを行う方法を調査します。ありがとう、本当に。 – monn3t

+0

カスタムアダプターは、値から必要なビューを生成できます。 ArrayAdapterは単にviewをobject.toString()で塗りつぶします。 ArrayAdapter(ids)を拡張し、getViewをオーバーライドするアダプタを実装します。 –

0

は、例えばマッピングとして別の配列を使用します。

English Language A 
    0   2 
    1   3 
    2   0 
    3   1 
+0

あなたの提案に感謝します:-)。私はそれを実装する方法を理解するのが苦労しているので、私は思ったように経験のプログラマーではないかもしれません。 – monn3t

関連する問題