我想用两个数组常量中的一个填充CharSequence,具体取决于条件。然后我想将它作为参数传递给AlertDialog。下面的代码是我试图实现的,但第7行给出了编译时错误"项目无法解析为变量"。
if (presetItemId == 0) {
final CharSequence[] items = { "Delete", "Edit" };
} else{
final CharSequence[] items = { "Delete"};
}
new AlertDialog.Builder(context).setTitle("Meal Item")
.setItems(items, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int item) {
if (item == 1) {
以不同的方式编码(如下所示)给出"数组常量只能用于初始化器"对于第3和第5行:
final CharSequence[] items;
if (presetItemId == 0) {
items = { "Delete", "Edit" };
} else{
items = { "Delete"};
}
new AlertDialog.Builder(context).setTitle("Meal Item")
.setItems(items, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int item) {
if (item == 1) {
editRecord(Integer.parseInt(id));
}
else if (item == 0) {
关于如何实现我想要做的事情的任何想法?
答案 0 :(得分:0)
Java允许您声明一个final
变量,并在以后分配它,只要它在此之前没有使用过。尝试在数组创建表达式({ "Delete", "Edit" }
)中包含数组初始值设定项(new CharSequence[] { "Delete", "Edit" }
):
final CharSequence[] items;
if (presetItemId == 0) {
items = new CharSequence[] { "Delete", "Edit" };
} else{
items = new CharSequence[] { "Delete"};
}
new AlertDialog.Builder(context).setTitle("Meal Item")
.setItems(items, new DialogInterface.OnClickListener() { //...