我正在尝试为每个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"}
}
Run Code Online (Sandbox Code Playgroud)
...
new AlertDialog.Builder(this)
.setTitle("Hours")
.setItems(items,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialoginterface, int i) {
// getStation(i);
}
})
.show();
}
Run Code Online (Sandbox Code Playgroud)
我在行中收到错误.setItems(items,:
items cannot be resolved
Run Code Online (Sandbox Code Playgroud)
我认为编译器认为CharSequence[] items可能没有初始化或者什么......我怎样才能使这个程序运行?
实际上items,代码中有4个变量,每个变量的范围非常有限(只有相应的代码块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
}
Run Code Online (Sandbox Code Playgroud)
编辑:我忘了new CharSequence[]这里有必要.如果在声明期间初始化变量,则可以将其保留,但在此处您将声明移出并使用简单赋值来设置值.由于某种原因,定义数组的短语法仅在initializaton语句中有效(即在与声明在同一语句中的赋值中).
| 归档时间: |
|
| 查看次数: |
57203 次 |
| 最近记录: |