Android开发报错:NullPointerException,调用Button.findViewById时对象为空
异常原因
- 你声明了
Button button变量但未初始化,直接调用button.findViewById(R.id.btn)时,button处于null状态,调用null对象的方法必然触发空指针异常。 - 错误地使用未初始化的Button对象调用
findViewById,正确的方式是调用Activity的findViewById方法来获取布局中的按钮实例。
修复方法
将button.findViewById(R.id.btn);替换为button = findViewById(R.id.btn);,完成Button变量的初始化,后续才能正常调用它的setOnClickListener方法。
修改后的MainActivity.java代码
package com.example.intentpassingoneactivitytoanother; import androidx.appcompat.app.AppCompatActivity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.Toast; public class MainActivity extends AppCompatActivity { Button button; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 初始化button变量,从布局中获取按钮实例 button = findViewById(R.id.btn); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent=new Intent(MainActivity.this, SecondActivity.class); startActivity(intent); // Toast.makeText(MainActivity.this, "This is toast", Toast.LENGTH_SHORT).show(); } }); } }
额外说明
findViewById是Activity的成员方法,作用是从setContentView加载的布局文件中,根据ID查找对应的View组件。- 必须确保在
setContentView(R.layout.activity_main)之后调用findViewById,否则布局未加载完成,会返回null,同样可能触发空指针异常。
内容的提问来源于stack exchange,提问作者Sudo_raj
相关产品推荐
相关产品推荐

