0

我不明白为什么 Eclipse 抱怨我的“OnClick”方法的第二个括号......

我知道这是一件简单的事情,但我似乎无法解决它!

我的活动代码:

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    CallService cs = new CallService();
    TotalTime = TotalTime + (cs.EndTime - cs.StartTime);
    Button button = (Button) findViewById(R.id.button1);

    button.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            Toast toast = Toast.makeText(getApplicationContext(), ""+TotalTime, Toast.LENGTH_SHORT);
            toast.show();
        } // <-- Why is it complaining about this bracket?!
}
4

4 回答 4

4

对于每个需要关闭的左括号或括号,您还需要用分号结束每个语句。编译器要});添加:

   // You open these, so you need to close them in order
   //                       v                           v
   button.setOnClickListener(new View.OnClickListener() {
       //                          v
       public void onClick(View v) {
           // Perform action on click

           Toast toast = Toast.makeText(getApplicationContext(), ""+TotalTime, Toast.LENGTH_SHORT);
           toast.show();
       }
   //  ^    
   }); // This is what the compiler wants
// ^^
于 2012-07-28T15:33:31.337 回答
2

你错过了这个:

button.setOnClickListener(new View.OnClickListener() {
    public void onClick(View v) {
        // Perform action on click
        Toast toast = Toast.makeText(getApplicationContext(), ""+TotalTime, Toast.LENGTH_SHORT);
        toast.show();
    }
}); // <------------- Close the parenthsesis!!
于 2012-07-28T15:34:00.790 回答
1

我建议您将代码放入 Eclipse 等 IDE 中。它通常会反映编译错误的点,因此您不必花费额外的精力来搜索此类错误。如果您想格式化代码,只需在 eclipse 中执行以下步骤

当您的光标位于编码区域时

按 ctrl + A // 它选择所有代码

然后按 ctrl + shift + F // 这会格式化您的代码

现在您可以轻松地找到括号的起点和终点,并且您的代码看起来格式正确。

于 2012-07-28T17:27:30.290 回答
1

1.你在错误的地方给了一个 extra bracket错过了一个bracketa brace一个semicolon

- 错误的:

         new View.OnClickListener()) // Dont add ")" here.

- 正确的:

         new View.OnClickListener()

- 错过:

           } );   

2.在程序中将此部分替换为您的部分,它肯定会工作......

button.setOnClickListener(new View.OnClickListener() {
           public void onClick(View v) {
               // Perform action on click

                   Toast toast = Toast.makeText(getApplicationContext(), ""+TotalTime, Toast.LENGTH_SHORT);
                   toast.show();
           }

       } ); 

3.为了进一步方便,我在你的整个工作代码下面发布......

//////////// 带有更正代码的整个 onCreate()/////////////

public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        CallService cs= new CallService();

       TotalTime = TotalTime + (cs.EndTime-cs.StartTime);

       Button button = (Button) findViewById(R.id.button1);

       button.setOnClickListener(new View.OnClickListener() {
           public void onClick(View v) {
               // Perform action on click

                   Toast toast = Toast.makeText(getApplicationContext(), ""+TotalTime, Toast.LENGTH_SHORT);
                   toast.show();
           }

       } );   

    }
于 2012-07-28T16:26:03.773 回答