2011年11月10日木曜日

androidのADT14からはswitch文が利用できなくなっている

androidのADT14からはswitch文が利用できなくなっています。コンパイルをしようとすると、コンパイルエラーで赤くなります。 なので以下のようなコードがある場合は、変更しないといけません。


       switch (item.getItemId()) {
         case R.id.menu_top:
          intent = new Intent(Constants.INTENT_ACTION_TOP);
          startActivity(intent);
             return true;
         case R.id.menu_help:
       intent = new Intent(Constants.INTENT_ACTION_HELP);
 
上記のコードは、メニューなどの分岐で頻繁に使われる文法ですが、以下のように修正が必要になります。

     int id = item.getItemId();
     if (id == R.id.menu_top) {
         intent = new Intent(Constants.INTENT_ACTION_TOP);
         startActivity(intent);
            return true;
     } else if (id == R.id.menu_help) {
         intent = new Intent(Constants.INTENT_ACTION_HELP);
 

この変更は、android4.0から仕様が変更されたのが原因のようです。自動生成されるRファイルの定数がfinalでなくなったためです。 Eclipseを使っている場合は、「command + 1」で自動的にリファクタリングで修正できます。

android4.0以降での挙動が怖いので、既存プロジェクトも修正したほうがよいかもしれないですね。なので、自動リファクタリングを使ってさっさと直してしまうのがベストだと思います。

参考サイト:http://tools.android.com/tips/non-constant-fields

(以上の記事は私が管理人をやっているfaceBookのページにも記述してあります。)

この記事がお役にたちましたらシェアをお願いします

このエントリーをはてなブックマークに追加

2 件のコメント:

  1. Library Projectの時だけですよ。

    返信削除
  2. 情報ありがとうございます。

    返信削除

Related Posts Plugin for WordPress, Blogger...