事の発端
アクションバーの戻るボタン実装方法を調べていて、
以下の書き方の記事がよく見かけたので、
@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