1. ホーム
  2. android

[解決済み] Android Gradle Plugin バージョン 5.0 ではリソース ID が非最終値になるため、switch case ステートメントでの使用を避けてください」という警告を解決するにはどうすればよいでしょうか。重複

2023-04-19 15:45:50

質問

 @Override
public void onClick(View v) {
    switch (v.getId())
    {
        case R.id.legalInformationLL:
            startActivity(new Intent(AboutActivity.this, LegalInformation.class));
            break;
        case R.id.backIB:
            finish();
            break;
    }
}

このコードに対して "リソースIDはAndroid Gradle Pluginバージョン5.0ではnon-finalとなるため、switch case文での使用を避けるように" という警告が表示されました。どのような解決策が考えられますか?このコードを次のように変更すると

 @Override
public void onClick(View v) {
    int id = v.getId();
    if (id == R.id.legalInformationLL) {
        startActivity(new Intent(AboutActivity.this, LegalInformation.class));
    } else if (id == R.id.backIB) {
        finish();
    }
}

という警告が出ますが、switch文はif文に比べてパフォーマンス的に優れています。そこで、より速く効率的に動作する可能性のある解決策は何でしょうか?

どのように解決するのですか?

ADT 14 以降、リソース識別子が最終的なものでなくなったため、この問題が発生しました。

次のリンクを参照してください。Googleは、代わりに if/else" を使用することを述べています。 を使うようにと述べています。

http://tools.android.com/tips/non-constant-fields

とはいえ、パフォーマンスに関しては "スイッチ" ステートメントの方が "if/else"。 の条件よりよいかもしれません。

しかし、あなたの場合、パフォーマンスや効率を得たり失ったりすることはありません。

が持つ性能の種類は "スイッチ" 文は、レンダー ループや効率に焦点を当てたアルゴリズムなど、高い効率を必要とする可能性があるより具体的なエッジ ケースについて考慮する必要があります。

あなたのユースケースのために if/else" を使用します。 条件を使用することは、効率的な問題を伴わない良い解決策です。