You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android开发报错:NullPointerException,调用Button.findViewById时对象为空

解决java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.View android.widget.Button.findViewById(int)' on a null object reference

异常原因

  • 你声明了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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 00:06:19