2016-03-26 8 views
0

私は、ユーザーが見ることができる一連の列挙型を使用するアンドロイドアプリを持っています。列挙型タイトル(例:GRAMS)を表示するのではなく、android strings.xmlを使用してこれを処理し、複数の言語を処理できるようにしたいと考えています。Android言語フレームワークを使用して列挙型の名前を処理する

問題である文字列への参照がgetIdentifierにせずにファイルを取得(as suggested here

それは

public enum Mass implements Unit { 
//SI 
GRAMS, 
KILOGRAMS} 

のstrings.xml

列挙型を助けている場合、一部のコード

<resources> <string name="grams_name">grams</string> <string name="grams_symbol">g</string> 

+0

java列挙型はc、C++、... enumsと似ていないので、列挙型自体にR.string.xxxを追加できます。カスタムプロパティを持つことができます – Selvin

+0

私はそれを考慮しましたが、すべての列挙型かなり面倒な言語オプション。私はもっ​​と良い方法があると思っていた。 現在、大きなスイッチ文をハンドラに作成して、それを処理します。 –

+0

ああ、あなたのコメントをお読みください。それは可能であり、言語の問題を処理する必要があります。私は今、プロジェクト単位をアンドロイドアプリに依存して保存するか、私のスイッチハンドラを作るかどうかを考えています。 乾杯 –

答えて

0

だから、私はこの問題を解決するために実装溶液をstring.xmlを

public static UnitDisplayData getUnitDetails(Unit enum) { 
switch (enum.toString()) { 
     // ---------ROOT UNITS---------- 
     case "GRAM": 
      return new UnitDisplayData(
        Mass.GRAM, 
        R.string.unit_grams_name, 
        R.string.unit_grams_symbol) 
     ... 
     } 
から表示文字列を含むデータオブジェクトに、ユニット列挙型に変換するスイッチケースとハンドラメソッドを作成することでした

これはボイラープレートの負荷を生成しますが、この戦略は複数の言語を処理する場合に機能し、アンドロイドは文字列を処理します。

これらのリソース参照を列挙型に結び付けることもできますが、私の目的のために列挙型をアプリケーションに依存させたくありませんでした。

関連する問題