[解決済み] switch case文のエラー: case式は定数式でなければならない
2022-06-25 13:20:45
質問
昨日までswitch-case文は全く問題なく動作していました。しかし、今朝早くコードを実行すると、eclipseはcase文に赤色の下線を引いて、「case式は定数式でなければなりません、それは定数です」とエラーを出しました。以下は私のコードです。
public void onClick(View src)
{
switch(src.getId()) {
case R.id.playbtn:
checkwificonnection();
break;
case R.id.stopbtn:
Log.d(TAG, "onClick: stopping srvice");
Playbutton.setImageResource(R.drawable.playbtn1);
Playbutton.setVisibility(0); //visible
Stopbutton.setVisibility(4); //invisible
stopService(new Intent(RakistaRadio.this,myservice.class));
clearstatusbar();
timer.cancel();
Title.setText(" ");
Artist.setText(" ");
break;
case R.id.btnmenu:
openOptionsMenu();
break;
}
}
R.id.intはすべて赤の下線が引かれています。
どのように解決するのですか?
通常のAndroidプロジェクトでは、リソースRクラスの定数はこのように宣言されています。
public static final int main=0x7f030004;
しかし、ADT14では、ライブラリプロジェクトでは、このように宣言されます。
public static int main=0x7f030004;
言い換えれば、ライブラリプロジェクトでは定数はfinalではありません。 したがって、あなたのコードはもはやコンパイルされないでしょう。
これに対する解決策は簡単です。switchステートメントをif-elseステートメントに変換します。
public void onClick(View src)
{
int id = src.getId();
if (id == R.id.playbtn){
checkwificonnection();
} else if (id == R.id.stopbtn){
Log.d(TAG, "onClick: stopping srvice");
Playbutton.setImageResource(R.drawable.playbtn1);
Playbutton.setVisibility(0); //visible
Stopbutton.setVisibility(4); //invisible
stopService(new Intent(RakistaRadio.this,myservice.class));
clearstatusbar();
timer.cancel();
Title.setText(" ");
Artist.setText(" ");
} else if (id == R.id.btnmenu){
openOptionsMenu();
}
}
http://tools.android.com/tips/non-constant-fields
を素早く変換することができます。
switch
ステートメントを
if-else
ステートメントに変換します。
Eclipseでは
カーソルを
switch
キーワードにカーソルを合わせ
Ctrl
+
1
で、選択
switch」を「if-else」に変換する。
Android Studioでは
カーソルを
switch
キーワードにカーソルを合わせ
Alt
+
Enter
で、選択
switch」を「if」に置き換えてください。
関連
-
[解決済み】エラー。switchステートメントでcaseラベルにジャンプする
-
Javaクラスローダーにソースコードから潜り込む
-
[解決済み] Rubyのswitch文の書き方
-
[解決済み] Pythonのswitch文の代用品?
-
[解決済み] switch文の中で変数を宣言してはいけないのはなぜですか?
-
[解決済み] Stringでswitch文が使えないのはなぜですか?
-
[解決済み] JavaScriptで複数ケースを扱うSwitch文
-
[解決済み] switch文の複数ケース
-
[解決済み] C#のSwitch文のフォールスルー?
-
[解決済み】1つのswitch case文に2つの値を使用する場合
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
myeclipseでコンパイルするとAntエラーが発生する javaの例外が発生しました。
-
Intellij IDEAのエラー「CreateProcess error=2, system could not find specified file」に対する完璧な解決策です。
-
エラーの解決方法 jarfile XXX.jarにアクセスできません。
-
javaでよく使われる英単語
-
Eclipse起動エラー:javaは起動したが、終了コード=1を返した(ネット上の様々な落とし穴)
-
java.lang.NoClassDefFoundError: org.apache.jasper.el.ELContextImpl クラスを初期化できませんでした。
-
Error: java.lang.NoClassDefFoundError: クラス XXXX を初期化できませんでした
-
java -serverコマンドで「Error: no `server' JVM at ... jvm.dll」を解決する方法です。
-
ローカルリソースのロードが許可されていない場合の解決策
-
[解決済み] Androidのパフォーマンスに関するヒントから「Intsしか必要ないEnumは避ける」が削除された理由とは?