非法表达的开始?

时间:2010-06-13 17:46:44

标签: java android

我正在尝试构建一个简单的Android应用程序,每次按下按钮时都会增加显示的数字,但我无法弄清楚如何修复我一直得到的“非法启动表达式”错误。

我的代码:

package com.clicker;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;


public class Clicker extends Activity
{
    private int clickerNumber = 0;
    private TextView clickerText;
    private Button clickerButton;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        clickerText = (TextView)findViewById(R.id.clickerText);
        final Button clickerButton = (Button)findViewById(R.id.clickerButton);
             clickerButton.setOnClickListener(new View.OnClickListener());
                {
                 public void onClick();
                    {
                    clickerNumber = clickerNumber++;
                    clickerText.setText(Integer.toString(clickerNumber));
                    }
                }
    }
}

编译器输出:

compile:
[javac] Compiling 2 source files to /home/fraser/Applications/Android/Code/Clicker/bin/classes
[javac] /home/fraser/Applications/Android/Code/Clicker/src/com/clicker/Clicker.java:24: ')' expected
[javac]              clickerButton.setOnClickListener(new View.OnClickListener();
[javac]                                                                         ^
[javac] /home/fraser/Applications/Android/Code/Clicker/src/com/clicker/Clicker.java:26: illegal start of expression
[javac]                  public void onClick();
[javac]                  ^
[javac] /home/fraser/Applications/Android/Code/Clicker/src/com/clicker/Clicker.java:26: illegal start of expression
[javac]                  public void onClick();
[javac]                         ^
[javac] /home/fraser/Applications/Android/Code/Clicker/src/com/clicker/Clicker.java:26: ';' expected
[javac]                  public void onClick();
[javac]                                     ^
[javac] /home/fraser/Applications/Android/Code/Clicker/src/com/clicker/Clicker.java:29: ';' expected
[javac]                     clickerText.setText(Integer.toString(clickerNumber)));
[javac]                                                                         ^
[javac] 5 errors

2 个答案:

答案 0 :(得分:4)

你有一些不需要的分号:

clickerButton.setOnClickListener(new View.OnClickListener());

public void onClick();

要修复语法错误,您需要以下内容:

clickerButton.setOnClickListener(new View.OnClickListener() {
    public void onClick() {
        clickerNumber = clickerNumber + 1;
        clickerText.setText(Integer.toString(clickerNumber));
    }
});

你的缩进似乎是错误的,这可能部分是造成混乱的原因。使用编辑器的自动缩进来捕获大量这些类型的错误。

但请注意,上面的代码仍然无效,因为在匿名类中,您无法访问非final的局部变量。因此,您无法访问clickerNumber。如果你做到最终对你没有多大帮助,因为那样你就无法改变它的价值。您可以将计数器提升为成员变量。

我还建议在尝试编写Android应用程序之前,首先要遵循标准的Java教程,并确保理解Java的基本语法。您会发现大多数Android教程都会假设您已经对编写标准Java应用程序有了很好的理解。

答案 1 :(得分:2)

我注意到一件事,你不需要:

clickerNumber = clickerNumber++;

因为++运算符处理赋值。试试吧:

clickerNumber++;

虽然我应该提到这不是问题的原因,但我想是一个提示。