我正在尝试构建一个简单的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
答案 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++;
虽然我应该提到这不是问题的原因,但我想是一个提示。