Android开发:调用SignInButton.setOnClickListener报空指针异常如何解决
问题根因
你遇到的java.lang.NullPointerException: Attempt to invoke virtual method 'void com.google.android.gms.common.SignInButton.setOnClickListener(android.view.View$OnClickListener)' on a null object reference报错,核心原因是MainActivity的onCreate方法中没有调用setContentView()加载布局文件,findViewById无法在未加载的布局中找到对应控件,返回null后调用方法就触发了空指针。
解决方法
1. 补全布局加载逻辑
在onCreate的super.onCreate调用之后、findViewById调用之前,添加setContentView代码,参数替换为你实际的布局文件名(如果你的布局文件名为activity_main.xml,代码如下):
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // 新增这一行,R.layout.xxx替换为你的布局文件名 setContentView(R.layout.activity_main); googleSignIn = findViewById(R.id.googleSignInButton1); // 剩余原有代码保持不变 }
2. 可选优化
你布局文件中多余的<layout></layout>标签可以删除,这个是DataBinding框架的专属根标签,放在RelativeLayout内部无实际作用,可能引发不必要的编译问题。
其他可能的排查方向
如果补全后仍然报错,可以检查以下两点:
- 布局文件中
SignInButton的id属性是否和findViewById中引用的R.id.googleSignInButton1完全一致,无拼写错误 setContentView中引用的布局文件名是否和你实际存放的布局文件名完全匹配
内容的提问来源于stack exchange,提问作者Balls in the Freezer
相关产品推荐
相关产品推荐

