错误:由以下原因引起:java.lang.NullPointerException

错误:由以下原因引起:java.lang.NullPointerException,java,Java,我有一个错误,上面写着: 原因:java.lang.NullPointerException:尝试对空对象引用调用虚拟方法“void android.widget.Button.setOnClickListener(android.view.view$OnClickListener)” 位于com.example.pc.proyectofinal.SignUp.onCreate(SignUp.java:46) 我尝试了两种方法: 首先是: Intent SignUpINTENT = new I

我有一个错误,上面写着:

原因:java.lang.NullPointerException:尝试对空对象引用调用虚拟方法“void android.widget.Button.setOnClickListener(android.view.view$OnClickListener)” 位于com.example.pc.proyectofinal.SignUp.onCreate(SignUp.java:46)

我尝试了两种方法:

  • 首先是:

    Intent SignUpINTENT = new Intent(SignUp.this, ResetPassword.class);
             startActivity(SignUpINTENT);
    
  • 第二次是:

    startActivity(new Intent(SignUp.this, ResetPassword.class));
    
两者都给了我同样的错误

代码如下:

公共类注册扩展了AppCompative活动{
private EditText inputEmail,inputPassword;//在mac上按option+enter,在windows上按ctrl+enter
专用按钮btnSignIn、btnSignUp、btnResetPassword;
私人ProgressBar ProgressBar;
私有FirebaseAuth-auth;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
//setContentView(R.layout.activity\u注册);
//获取Firebase身份验证实例
auth=FirebaseAuth.getInstance();
btnSignIn=(按钮)findViewById(R.id.sign\u in\u按钮);
btnSignUp=(按钮)findViewById(R.id.sign\u up\u按钮);
inputEmail=(EditText)findViewById(R.id.email);
inputPassword=(EditText)findViewById(R.id.password);
progressBar=(progressBar)findViewById(R.id.progressBar);
btnResetPassword=(按钮)findViewById(R.id.btn\u重置\u密码);
btnResetPassword.setOnClickListener(新视图.OnClickListener(){//这是注册表的问题
@凌驾
公共void onClick(视图v){
Intent SignUpINTENT=newintent(SignUp.this,ResetPassword.class);
startActivity(注册意向);
//startActivity(新意图(SignUp.this、ResetPassword.class));
}
});
setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
完成();
}
});
btnSignUp.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
字符串email=inputEmail.getText().toString().trim();
字符串密码=inputPassword.getText().toString().trim();
如果(TextUtils.isEmpty(电子邮件)){
Toast.makeText(getApplicationContext(),“输入电子邮件地址!”,Toast.LENGTH\u SHORT.show();
返回;
}
if(TextUtils.isEmpty(密码)){
Toast.makeText(getApplicationContext(),“输入密码!”,Toast.LENGTH\u SHORT.show();
返回;
}
if(password.length()<6){
Toast.makeText(getApplicationContext(),“密码太短,请输入至少6个字符!”,Toast.LENGTH_short).show();
返回;
}
progressBar.setVisibility(View.VISIBLE);
//创建用户
auth.createUserWithEmailAndPassword(电子邮件,密码)
.addOnCompleteListener(SignUp.this,new OnCompleteListener(){
@凌驾
未完成的公共void(@NonNull任务){
Toast.makeText(SignUp.this,“createUserWithEmail:onComplete:“+task.issusccessful(),Toast.LENGTH\u SHORT).show();
progressBar.setVisibility(View.GONE);
//如果登录失败,则向用户显示消息。如果登录成功
//将通知身份验证状态侦听器,并使用逻辑来处理
//可以在侦听器中处理已登录用户。
如果(!task.issusccessful()){
Toast.makeText(SignUp.this,“身份验证失败”。+task.getException(),
吐司。长度(短)。show();
}否则{
startActivity(新意图(SignUp.this,Main.class));
完成();
}
}
});
}
});
}
@凌驾
受保护的void onResume(){
super.onResume();
progressBar.setVisibility(View.GONE);
}
}

您在
onCreate()中有这一行注释:

setContentView(R.layout.activity_signup);
为什么?
没有这一行,就没有活动的布局,所有视图都无法通过
findViewById
找到,它们是
null

所以当你尝试的时候

btnResetPassword.setOnClickListener() 
你得到

java.lang.NullPointerException

谢谢,我原谅了,现在问题已经解决了:“AbnerBecerra,如果这个答案帮助你,考虑接受它。”
java.lang.NullPointerException