Android Studio提示尝试将ID绑定空对象 计算器Activity空指针异常求助
问题根因
你当前触发空指针的核心错误是调用findViewById的主体对象错误:
你声明的btn1、btn2、textResult等控件变量在初始化之前本身就是空对象,你直接用这些空对象调用findViewById,自然会抛出空指针异常。findViewById是Activity/View类的方法,在Activity的onCreate中绑定布局控件,应该直接调用Activity本身的findViewById方法,不需要用控件变量去调用。
修复方案
把onCreate方法中所有绑定控件的代码按如下规则修改:
原来的错误写法:
btn1 = btn1.findViewById(R.id.btn_1);
修改为:
btn1 = findViewById(R.id.btn_1);
所有控件绑定都遵循该规则修改即可,修改后的完整onCreate代码如下:
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_calculator); btn1 = findViewById(R.id.btn_1); btn2 = findViewById(R.id.btn_2); btn3 = findViewById(R.id.btn_3); btn4 = findViewById(R.id.btn_4); btn5 = findViewById(R.id.btn_5); btn6 = findViewById(R.id.btn_6); btn7 = findViewById(R.id.btn_7); btn8 = findViewById(R.id.btn_8); btn9 = findViewById(R.id.btn_9); btn0 = findViewById(R.id.btn_0); btnPlus = findViewById(R.id.btn_plu); btnMinus = findViewById(R.id.btn_min); btnMultiply = findViewById(R.id.btn_mul); btnDivide = findViewById(R.id.btn_div); btnClear = findViewById(R.id.btn_clr); btnResult = findViewById(R.id.btn_equ); textResult = findViewById(R.id.txt_result); }
补充说明
- 后续如果是在自定义View、Fragment或者RecyclerView的ViewHolder中绑定控件,才需要用对应的根View对象调用
findViewById,比如view.findViewById(R.id.xxx) - 你已经排查过布局ID拼写正确,修改后即可正常运行,不会再触发该空指针异常。
内容的提问来源于stack exchange,提问作者BlackORTS
相关产品推荐
相关产品推荐

