我的项目抛出了一个nullpointerexception购买,尝试在null对象上调用onclicklistener。这是我的代码。
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
buttonRegister = (Button) findViewById(R.id.buttonRegister);
editTextEmail = (EditText) findViewById(R.id.editTextEmail);
editTextPassword = (EditText) findViewById(R.id.editTextPassword);
buttonSignin = (Button) findViewById(R.id.buttonSignin);
buttonRegister.setOnClickListener(this);
buttonSignin.setOnClickListener(this);
progressDialog = new ProgressDialog(this);
firebaseAuth = FirebaseAuth.getInstance();
if (firebaseAuth.getCurrentUser() != null){
finish();
startActivity(new Intent(getApplicationContext(), ProfileActivity.class)); //it is here where the error is
}
}
public void onClick(View view) {
if(view == buttonRegister){
registerUser();
}
if (view == buttonSignin)
startActivity(new Intent(this, LoginActivity.class));
}
这里是logcat
at android.app.ActivityThread.-wrap12(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1477)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6119)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.view.View.setOnClickListener(android.view.View$OnClickListener)' on a null object reference
at com.example.myapplication7.MainActivityOne.onCreate(MainActivityOne.java:53)
at android.app.Activity.performCreate(Activity.java:6679)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1118)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2618)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2726)
at android.app.ActivityThread.-wrap12(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1477)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6119)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)
这很有趣,因为昨天它对我来说很完美,但现在不行了。代码有什么问题?
您必须为Button的setOnClickListeners正确设置'context'。尝试这样做:
buttonRegister.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
registerUser();
}
});
buttonSignin.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
startActivity(new Intent(this, LoginActivity.class));
}
});
此外,您可以使用更精确的方法来获取Firebase身份验证实例。当您使用电子邮件和密码登录时,可以使用Firebase身份验证的signInWithEmailAndPassword。
由此,您还可以访问用户凭据,这可能对您应用程序的其他实例很有帮助。
在第53行,调用setOnClickListener的视图为null。
检查或调试,请保持它不是null。
当应用程序尝试使用具有空值的对象引用时,抛出原因:java.lang.NullPointerException:尝试调用虚拟方法“无效”android.view.View.setOnClickListener(android.view.View $ OnClickListener)'在空对象引用上
NullPointerException
。
android:onClick
方法。您可以尝试
buttonRegister.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
registerUser();
}
});
buttonSignin.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
startActivity(new Intent(this, LoginActivity.class));
}
});