如何解决“Android Gradle插件版本5.0中的资源ID将不是最终版本,请避免在switch case语句中使用它们”警告?[duplicate]

k10s72fa  于 2023-03-21  发布在  Android
关注(0)|答案(1)|浏览(177)

此问题在此处已有答案

Android resource IDs suddenly not final, switch()'es broken(6个答案)
2年前关闭。

@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插件版本5.0中将是非最终的,请避免在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语句的性能更好。2那么什么可能的解决方案能更快更有效地工作呢?

1zmg4dgp

1zmg4dgp1#

发生此问题的原因是ADT 14资源标识符不再是最终标识符。
请看下一个链接,Google声明使用**“if/else”条件作为替代:
http://tools.android.com/tips/non-constant-fields
话虽如此。在性能方面,
“switch”语句可能比“if/else”**条件性能更好。
但是,在您的情况下,您不会获得或损失性能或效率。

  • *“switch”**语句可能给予的性能类型必须考虑到可能需要高效率的更具体的边缘情况,如渲染循环或注重效率的算法。

对于您的用例,使用**“if/else”**条件是一个没有效率问题的好解决方案。

相关问题