2011-05-17 2 views
3

プロジェクトの「定数」のほとんどを保持するプロジェクトの「値」ディレクトリに「numeric.xml」ファイルがあります。 switch文でこれらの定数のいくつかを使用したいと思いますが、Eclipse/Javaでは、 "resources.getInteger(R.integer.INTEGER_NAME)"を定数と見なさないため、このようには好きではありません。コンパイラーやEclipseが定数であることを確認する方法がいくつかありますか、あるいはif/elseチェーンで生きる必要がありますか?Android Integerリソースをswitch文で使用できますか?

編集:私は "final int INTEGER_NAME = resources.getInteger(R.integer.INTEGER_NAME)"を実行し、case文でINTEGER_NAMEを使用していましたが、どちらも機能しませんでした。

+0

働きました。 \t \t int i = r.getInteger(R.integer.lol); \t \tスイッチ(I){ \t \tケース1: \t \t \t Log.d( "笑"、 "hehehe0")。 \t \t \t break; \t \tデフォルト: \t \t \t break; \t \t} ' – PedroAGSantos

+0

@subspider - OPは、' switch.'パラメータではなく、 'r.getInteger(...)'の再利用を** case **値として使うことを頼んでいます。 –

答えて

3

技術的には、整数リソースの値は定数ではありません。コンパイラはどのように各ケースの価値を知っていますか?さまざまな設定で異なる値を取得する可能性は常にあります。 (例えば、landscapeの値が異なるvalues-landリソースフォルダを持つこともできます)。または、xmlファイルの値を変更するだけで済みます。

本当に定数の場合は、コードで定義します。私が見ることができる他の唯一の方法は、スイッチの各ブランチに対して1つのRunnable(またはCallable)オブジェクトのディスパッチテーブルを作成し、リソースから取得した値に基づいて適切なオブジェクトを取得することです。

+0

テッド、その答えに感謝します。私はあなたにJava初心者の質問をしてもらえれば幸いです。 Javaで定数を定義するクリーンな方法はありますか?ある場所では定義されていますが、無関係な複数のクラスでは見えますか? –

+0

@Jim Clayはい、アプリケーションから継承するクラスに配置し、変数を静的に宣言して助けてください。定数であれば、複雑な型の場合はxml resorcesを使用する方が良いです。静的を使用します。 – PedroAGSantos

+0

@Jim - それのために。インターフェースはフィールド値の集合として定義することができます。言語仕様によって、これらは暗黙的に最終的かつ静的です。 –

2

まあ、は、それ以上の定数ではありません。これは、ルックアップなので、実際にcase文で使用することはできません。あなたはif/elseチェーンで生きなければなりません。

0

私はこれらをしようと試み、それが私はこれらをしようと試み、それがR = getResources() `リソース働い

Resources r = getResources(); 
int i = r.getInteger(R.integer.lol); 
switch (i) { 
    case 1: 
     Log.d("lol", "hehehe0"); 
     break; 
    default: 
     break; 
} 
+2

はい、私はそれが働いているのを見ることができましたが、それは私が欲しいものではありません。私は "case 1"を "case r.getInteger ..."に置き換えたいと思います。 –

+0

OPは、 'r.getInteger(...)'の再利用を 'switch'パラメータではなく、' case'値として使うことを要求しています。 –

+0

@Jim Clayなぜあなたはこれらのことをやりたいのですか? – PedroAGSantos

関連する問題