2012/11/20
R.id.xxx を switch 文で使うと case expressions must be constant expressions
すると、 case expressions must be constant expressions というエラーが。
Migrate Android Code をクリックしてみると、以下のような文が表示されました。
ざっと意訳すると、以下のような感じでしょうか。
リンク先の http://tools.android.com/tips/non-constant-fields を見てみると、ほぼ同じことが図入りで説明されています。ADT 14 以降のライブラリプロジェクトでは R.id.menu_settings のようなリソースフィールドが定数ではなくなります。これは、再コンパイル無しでライブラリを使用できるようにするためです。
この変更により、(リソース)フィールドを switch 文の中で直接使うことが出来なくなります。代わりに、if-else を使用するようにしてください。
Eclipse では switch を自動的に if-else に変更することが出来ます。switch 文の上にカーソルを置き、Quick Fix を呼び出してください (Windows, Linux の場合は Ctrl-1, Mac の場合は Cmd-1)。
そして、 Convert switch to if-else を選択します。
というわけで、「ライブラリプロジェクトにおいて、リソースフィールドを条件分岐に使用する場合は、switch ではなく if-else を使うように」ってことだそうです。
ちなみに、「ライブラリプロジェクト」とは
Project → Properties → Android で Is Library にチェックを入れたプロジェクトのことです。
0 件のコメント:
コメントを投稿