gpt4 book ai didi

android - 为什么 onOptionsItemSelected 方法/函数从使用 switch-case 语句更改为 if block ?

转载 作者:行者123 更新时间:2023-11-29 20:41:56 33 4
gpt4 key购买 nike

我在 Android Studio 中编程,我想知道为什么他们将 onOptionsItemSelected 的实现更改为使用 if condition,其中语句将检查传递的 id 而不是它曾经在 Eclipse 中使用的 switch case block ?我不确定它是否仍然使用 Android Studio 中的 switch case 语句。

onOptionsItemSelected 方法过去是这样的:

@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.

switch(item.getItemId()) {
case R.id.id1:
//blah blah blah
break;

case R.id.id2:
//test
break;

};
return super.onOptionsItemSelected(item);
}

现在看起来像这样:

@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();

//noinspection SimplifiableIfStatement
if (id == R.id.id1) {
return true;
}

return super.onOptionsItemSelected(item);
}

有谁知道为什么要改?比较整数时,使用 if-else block 优于 switch case block 是否有优势(因为 id 基本上是整数)。

我怀疑 Google 是否会决定为此函数使用 if-else 语句,如果它与 switch case block 的“旧式”相比没有优点或优势的话。

最佳答案

通常使用if-elseswitch 并不重要,两者都会完成同样的事情。

有一种情况不能使用switch,那就是如果id值(例如R.id.id1)在库模块中被定义和使用.这是因为库模块中的资源名称生成为 public static 而不是 R.java 文件中的 public static final,因此它们不是更长的编译时常量表达式,因此不能用作 switch 的情况。

关于android - 为什么 onOptionsItemSelected 方法/函数从使用 switch-case 语句更改为 if block ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30905602/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com