0

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

无论如何,有人知道}); 的含义吗?在末尾?

4

5 回答 5

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);
于 2012-07-25T00:43:49.657 回答
3

在 ”});”:

  • "}" : 关闭 View.OnClickListener() 方法
  • ")" : 关闭 setOnClickListener()
  • “;” : 关闭指令
于 2012-07-25T00:49:37.767 回答
1

它关闭 setOnClickListener 。提示如果您使用的是 eclipse,请将光标设置在右方括号的右侧。左方括号将被突出显示,这样您就可以看到是什么。

于 2012-07-25T00:47:21.870 回答
0

开始:

checkBox.setOnClickListener(new View.OnClickListener()
{
public void onClick(View v) {
        if (((CheckBox)v).isChecked())
            DisplayToast("CheckBox is checked");
        else
            DisplayToast("CheckBox is unchecked");
    }
});

Eliminate 方法(这不会在所有情况下都编译,但现在假设它会编译):

checkBox.setOnClickListener(new View.OnClickListener()
{
  /* .. */
});

删除多余的空格:

checkBox.setOnClickListener(new View.OnClickListener() { /* .. */ });

而且,那里。它看起来像一个“正常的方法调用”:) 代码只是传递了一个表示事件侦听器的匿名类型的实例。

它可以写成:

ClickEventListener listener = new View.OnClickListener() { /* .. */ };
checkBox.setOnClickListener(listener);

快乐编码!

于 2012-07-25T01:06:55.550 回答
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

干杯!

于 2012-07-30T06:20:29.990 回答