Android开发:getViewById返回null的原因定位

在Android开发中,遇到getViewById返回null导致NullPointerException的情况,可能的原因包括:调用顺序错误,需要先setContentView再查找视图;上下文对象不匹配,确保使用正确的Context;Eclipse可能导致的编译问题,解决办法是清理项目;以及新版本SDK中,Activity不再直接加载布局,需要在Fragment中或者onStart方法中获取视图。本文提供了相应的解决方案。
摘要由CSDN通过智能技术生成

      最近在研究开发一些基于AndroidApp,遇到了一些问题,其中一个比较关键的是在Activity中的onCreate()方法中获取Button对象,代码大概如下:

 

private Button mTrueButton;

@Override

public void onCreateBundle savedInstanceState{

   super.onCreate(savedInstanceState);

   setContentView(R.layout.activity_quiz);

 

   mTrueButton = (Button) getViewById(R.id.true_button);

   mTrueButton.setOnClickListener(…);

 

}

 

该代码是根据一本android的编程指南进行修改的,但意想不到的是,一执行,app提示系统错误,终止运行,通过debug跟踪发现:mTrueButtonnull,系统执行到mTrueButton.setOnclickListener抛出java.lang.NullPointerException很明显,此时调用getViewById无法获取到Button这个View对象,于是开始网上搜索资料,认为可能的原因是下面几个:

一,调用顺序不当导致的异常

持这种观点的主要原因是getViewById的调用放到了setContentView之前,如下:

super.onCreate(savedInstanceState);

mTrueButton =

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值