LoginSignup
3
5

More than 3 years have passed since last update.

【Android】switch/caseでR.id.XXXXを書いたら警告が出た

Posted at

事の発端

アクションバーの戻るボタン実装方法を調べていて、
以下の書き方の記事がよく見かけたので、

@Override
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
    int id = item.getItemId();
    switch (id) {
        case R.id.home:
            // ...
            break;
        default:
            break;
    }
    return super.onOptionsItemSelected(item);
}

その通りに実装したら、こういう警告がでてしまいました。

Resource IDs will be non-final in Android Gradle Plugin version 5.0, avoid using them in switch case statement.

if-else文のほうが良いらしい

AndroidStudioのガイドでは、
R.id.XXは、ビルドするまでfinal staticではないから、らしい。

なので、if-else文で判定するようにしたら警告は消えました。

@Override
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
    int id = item.getItemId();
    if (id == R.id.home) {
      // ...
    } else {

    }
    return super.onOptionsItemSelected(item);
}

どうしてもswitch/caseを書きたい場合

gradle(モジュール)のLintを無効にすれば良いようです。

android {

    lintOptions {
        disable 'NonConstantResourceId'
    }
}

環境

  • Android Studio
    • 4.1
  • Android Gradleプラグインバージョン
    • 4.1.0
  • Gradleバージョン
    • 6.5
3
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
5