1

私はアプリに取り組んでいて、最近新しいコンピューターを手に入れました。既存のコードをこのコンピューターにインポートする必要がありました。これを行うと、ビルド パスにいくつかのエラーが表示されるので、修正します。しかし今、スイッチとケースのすべてのケースでエラーが発生します。ケース式は定数式でなければなりません。

私のコードの例:

case R.id.b3:
    a.putExtra("Green", "green");
    startActivity(a);
    break;
case R.id.b4:
    a.putExtra("Pink", "pink");
    startActivity(a);
    break;

ボタンのIDでエラーが発生します。私が使用した他のコンピューターではすべてが正常に機能していたので、なぜこのエラーが発生するのかわかりません。私はそれをグーグルで検索し、それらすべてをif elseステートメントに置き換える必要があることを読みましたが、すべてのスイッチとケースを置き換えるのは大きな苦痛になるので、それは避けたいと思います.

インポートしたコードでこの問題が発生するのはなぜですか?

4

4 に答える 4

12

これは、リソースがライブラリ プロジェクトで定義されている場合に発生します。Android プラグインの新しいバージョンの 1 つでは、ライブラリ プロジェクトのコンパイル方法の変更に基づいてこれが必要になると思います。if-else が必要です。IDE は自動的にそれを行います。switch キーワードを強調表示して ctrl-1 を押すと、変更を自動的に行うオプションが表示されます。

ここでそれについて読むことができます。

于 2013-03-27T19:36:06.763 に答える
0

これはおそらくサードパーティのライブラリを使用している可能性があります。アプリケーションを迅速に開発し、複数のライブラリを使用できるようにするために、リソース ID は final として定義されていないため、switch/case ではなく if/else を使用する必要があります.

于 2013-09-25T15:19:14.130 に答える
0

作業しているアクティビティ、つまりエラーが発生したアクティビティを確認し、その中でこのコード行を調べます

import android.R;

消して!クリーンを実行すると、すべてが機能するはずです

于 2013-03-27T19:33:47.187 に答える
0

ADT14 以降、ライブラリ内で ID が一定であるという保証はありません。しばらく前にツール チェーンが変更されました。

于 2013-03-27T19:38:02.887 に答える