此问题在此处已有答案:
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那么什么可能的解决方案能更快更有效地工作呢?
1条答案
按热度按时间1zmg4dgp1#
发生此问题的原因是ADT 14资源标识符不再是最终标识符。
请看下一个链接,Google声明使用**“if/else”条件作为替代:
http://tools.android.com/tips/non-constant-fields
话虽如此。在性能方面,“switch”语句可能比“if/else”**条件性能更好。
但是,在您的情况下,您不会获得或损失性能或效率。
对于您的用例,使用**“if/else”**条件是一个没有效率问题的好解决方案。