无法找到})的意思; Android中的花括号,圆括号

时间:2012-07-25 00:41:10

标签: java android

作为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");
    }
});

无论如何,有人知道})的含义;最后?

5 个答案:

答案 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“});”:

  • “}”:关闭View.OnClickListener()方法
  • “)”:关闭setOnClickListener()
  • “;” :关闭指示

答案 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

干杯!