Java Array常量的条件填充

时间:2014-05-30 15:53:07

标签: java arrays

我想用两个数组常量中的一个填充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) {

关于如何实现我想要做的事情的任何想法?

1 个答案:

答案 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() { //...