首先本篇文章只对那些对java框架或者android等初学编程者,我想只要有一定基础入门者就不会犯这种低级错误了。
当然我自己也是一个技术初学者,有不对的地方大家一定要指出来改正。
先说一下问题,我在主函数中为了引用XML文件中声明的界面元素,使用如下代码
Button button1 = (Button)findViewById(R.id.button1);
按说无可厚非,但在添加事件的时候就出问题了,报错如下
Syntax error on token(s), misplaced construct(s)
一个语法错误,我最初以为是哪写错了,查找了半天与网上的比对甚至直接复制下来都没有问题,后来我发现我犯了一个愚蠢的错误,不是语法的问题是代码结构的问题
Java中有一句话叫做万物皆类,我把这段程序不下心写到了函数外,使编译器报错,正确的做法是放到onCreate()函数里,问题解决。
问题是解决了应该去挖掘一下问题的来源
安卓基础主函数代码结构如下
public class XxxxxxActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
首先Activity组件是Android程序的呈现层,显示可视化的用户界面,并接受与用户交互所产生的界面事件。
其中的onCreate()是Activity组件一个重要回调函数,用来进行Acticity的初始化,比如创建View、绑定数据或恢复信息等。
所以控件的引用以及响应事件的创建理应放在这个函数里。
最后改好的代码如下
public class RelativeLayoutActivity extends Activity {
final static String TAG="REALOGCAT";
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button button1 = (Button)findViewById(R.id.button1);
Button button2 = (Button)findViewById(R.id.button2);
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
}
});
button2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
}
});
}