最近在研究开发一些基于Android的App,遇到了一些问题,其中一个比较关键的是在Activity中的onCreate()方法中获取Button对象,代码大概如下:
private Button mTrueButton;
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_quiz);
mTrueButton = (Button) getViewById(R.id.true_button);
mTrueButton.setOnClickListener(…);
}
该代码是根据一本android的编程指南进行修改的,但意想不到的是,一执行,app提示系统错误,终止运行,通过debug跟踪发现:mTrueButton为null,系统执行到mTrueButton.setOnclickListener抛出java.lang.NullPointerException,很明显,此时调用getViewById无法获取到Button这个View对象,于是开始网上搜索资料,认为可能的原因是下面几个:
一,调用顺序不当导致的异常
持这种观点的主要原因是getViewById的调用放到了setContentView之前,如下:
super.onCreate(savedInstanceState);
mTrueButton =