我在类中定义了两个Button,在定义时初始化了这两个Button,编译无错,但是在运行时就出错
当我把这两个Button的初始化放在onStart()中时程序就能正常运行了,请问这是怎么回事呢?下面是出错时的代码//......public class FirstActivity extends Activity{
private Button exchangeButton = (Button)findViewById(R.id.exchange_button);
private Button exitButton = (Button)findViewById(R.id.exit_button);
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.fst_main);
}
@Override
public void onStart(){
super.onStart();//如果将初始化放在这里就不会错了
// exchangeButton = (Button)findViewById(R.id.exchange_button);
// exitButton = (Button)findViewById(R.id.exit_button);
//创建按钮监听事件。一旦切换按钮被点击,则进行界面切换
exchangeButton.setOnClickListener(new Button.OnClickListener(){
@Override
public void onClick(View v){
//实现切换功能
Intent exchangeIntent = new Intent();
exchangeIntent.setClass(FirstActivity.this,SecondActivity.class);
startActivity(exchangeIntent);
}
});
}
@Override
public void onResume(){
super.onResume();
//创建退出按钮的监听事件。一旦点击退出,则退出本Activity
exitButton.setOnClickListener(new Button.OnClickListener(){
@Override
public void onClick(View v){
//实现关闭本Activity的功能
FirstActivity.this.finish();
}
});
}
}
当我把这两个Button的初始化放在onStart()中时程序就能正常运行了,请问这是怎么回事呢?下面是出错时的代码//......public class FirstActivity extends Activity{
private Button exchangeButton = (Button)findViewById(R.id.exchange_button);
private Button exitButton = (Button)findViewById(R.id.exit_button);
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.fst_main);
}
@Override
public void onStart(){
super.onStart();//如果将初始化放在这里就不会错了
// exchangeButton = (Button)findViewById(R.id.exchange_button);
// exitButton = (Button)findViewById(R.id.exit_button);
//创建按钮监听事件。一旦切换按钮被点击,则进行界面切换
exchangeButton.setOnClickListener(new Button.OnClickListener(){
@Override
public void onClick(View v){
//实现切换功能
Intent exchangeIntent = new Intent();
exchangeIntent.setClass(FirstActivity.this,SecondActivity.class);
startActivity(exchangeIntent);
}
});
}
@Override
public void onResume(){
super.onResume();
//创建退出按钮的监听事件。一旦点击退出,则退出本Activity
exitButton.setOnClickListener(new Button.OnClickListener(){
@Override
public void onClick(View v){
//实现关闭本Activity的功能
FirstActivity.this.finish();
}
});
}
}
给你个建议以后用的时候写个方法先把用的组件初始化了,就不容易犯那种错误了
比如
public class FirstActivity extends Activity{
private Button exchangeButton ,exitButton ;
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.fst_main);
init();
}
private void init(){
exchangeButton = (Button)findViewById(R.id.exchange_button);
exitButton = (Button)findViewById(R.id.exit_button);
}