作为Android的初学者,多年来一直远离编程,我无法在互联网上找到这个答案。它涉及我一直在阅读的书中的以下代码,但Android的语法很常见。我无法弄清楚});表示。作为一个过去曾努力使包围可读的人,我觉得这个代码很神奇,肯定有更好的方法来展示这个可能吗?
以下是代码:
CheckBox checkBox = (CheckBox)findViewById(R.id.chkAutosave);
checkBox.setOnClickListener(new View.OnClickListener()
{
public void onClick(View v) {
if (((CheckBox)v).isChecked())
DisplayToast("CheckBox is checked");
else
DisplayToast("CheckBox is unchecked");
}
});
无论如何,有人知道})的含义;最后?
答案 0 :(得分:6)
关闭View.OnClickListener
匿名实施的定义,然后关闭方法调用setOnClickListener()
。
为了更清楚,代码相当于:
View.OnClickListener listener = new View.OnClickListener() {
public void onClick(View v) {
if (((CheckBox)v).isChecked())
DisplayToast("CheckBox is checked");
else
DisplayToast("CheckBox is unchecked");
}
};
checkBox.setOnClickListener(listener);
答案 1 :(得分:3)
in“});”:
答案 2 :(得分:1)
它会关闭setOnClickListener。提示如果您使用的是eclipse,请将光标设置在封闭支架的右侧。打开支架将被突出显示,以便您可以看到它是什么。
答案 3 :(得分:0)
开始:
checkBox.setOnClickListener(new View.OnClickListener()
{
public void onClick(View v) {
if (((CheckBox)v).isChecked())
DisplayToast("CheckBox is checked");
else
DisplayToast("CheckBox is unchecked");
}
});
消除方法(这不会在所有情况下都编译,但我们暂时会假装它):
checkBox.setOnClickListener(new View.OnClickListener()
{
/* .. */
});
删除额外的空格:
checkBox.setOnClickListener(new View.OnClickListener() { /* .. */ });
而且,那里。它看起来像是“正常的方法调用”:)代码只是传递一个匿名类型的新实例,它代表一个事件监听器。
本来可以写的:
ClickEventListener listener = new View.OnClickListener() { /* .. */ };
checkBox.setOnClickListener(listener);
快乐的编码!
答案 4 :(得分:0)
感谢您的回答。我发现重新排列了括号,所以我会发布这个以供将来参考。虽然我不确定它是如何符合传统做法的。
CheckBox checkBox = (CheckBox)findViewById(R.id.chkAutosave);
checkBox.setOnClickListener
( new View.OnClickListener()
{
public void onClick(View v)
{
if (((CheckBox)v).isChecked())
DisplayToast("CheckBox is checked");
else
DisplayToast("CheckBox is unchecked");
} // onClick
} // new View.OnClickListener()
); // checkBox.setOnClickListener
干杯!