我正在尝试创建一个项目列表,每个 i 和 j 变量都不同。我的代码是:
if (i == 0) {
if (j == 0) {
final CharSequence[] items = {"4:45", "5:00"}
} else if (j == 1) {
final CharSequence[] items = {"4:43", "4:58"}
} else if (j == 2) {
final CharSequence[] items = {"4:41", "4:56"}
} else {
final CharSequence[] items = {"4:38", "4:53"}
}
...
new AlertDialog.Builder(this)
.setTitle("Hours")
.setItems(items,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialoginterface, int i) {
// getStation(i);
}
})
.show();
}
我在 .setItems(items,
:
items cannot be resolved
我认为编译器认为 CharSequence[] 项
可能未初始化或其他...
我怎样才能让这个程序运行?
最佳答案
您的代码中实际上有 4 个 items
变量,每个变量的作用域都非常有限(仅是相应 if
的代码块)。
相反,您需要创建一个具有更大作用域的变量:
if (i == 0) {
final CharSequence[] items;
if (j == 0) {
items = new CharSequence[] {"4:45", "5:00"};
} else if (j == 1) {
items = new CharSequence[] {"4:43", "4:58"};
} else if (j == 2) {
items = new CharSequence[] {"4:41", "4:56"};
} else {
items = new CharSequence[] {"4:38", "4:53"};
}
// you can use items here
}
编辑:我忘记了这里需要new CharSequence[]
。如果在声明期间初始化变量,则可以省略它,但在这里您将声明移出并使用简单的赋值来设置值。由于某种原因,定义数组的短语法仅在初始化语句中有效(即在与声明相同的语句中的赋值中)。
关于java - 变量无法解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56567454/