gpt4 book ai didi

java - 最终的局部变量 cb 可能已经被赋值

转载 作者:行者123 更新时间:2023-11-29 05:05:21 25 4
gpt4 key购买 nike

我试图在 if 语句中获取 getId 以检查复选框是否已设置,但我不知道如何在 if 语句中定义 cb 以使其工作。

当我将 cb 声明为已提交的局部变量时,出现两个错误:

The final local variable cb may already have been assigned

Cannot invoke isChecked() on the primitive type int

        private void createCheckboxList(final ArrayList<Integer> items) {
final CheckBox cb;

final LinearLayout ll = (LinearLayout) findViewById(R.id.lila);
for (int i = 0; i < items.size(); i++) {

//here I am getting `The final local variable cb may already have been assigned`

cb = new CheckBox(this);
cb.setText(String.valueOf(items.get(i)));
cb.setId(i);
ll.addView(cb);

}
Button btn = new Button(this);
btn.setLayoutParams(new LinearLayout.LayoutParams(500, 150));
btn.setText("submit");
ll.addView(btn);

btn.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
for (int i : items) {
// here I am getting `Cannot invoke isChecked() on the primitive type int
`
if (cb.getId().isChecked()) {

}
}

}
});

}

最佳答案

您已将变量声明为最终变量(一旦设置就无法更改):

final CheckBox cb;

您可能需要在该点设置值,或者删除 final 修饰符(您的循环将尝试多次分配一个值)。

至于另一个问题:

if (cb.getId().isChecked())

当您在 .getId() 之后添加 .isChecked() 时,这是一种简短的表达方式,“在第一个方法的返回对象上调用此方法。

错误告诉您该方法不返回对象,而是原始类型 (int)。您需要在 Checkbox 对象上调用第二个方法,尝试类似的方法:

((CheckBox)v).isChecked();

或者,如果您已经拥有 ID:

((CheckBox) findViewById(id)).isChecked();

关于java - 最终的局部变量 cb 可能已经被赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30555293/

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