由于SetOnClickListener NullPointerException(Android Studio)导致应用程序崩溃

时间:2017-11-04 23:40:58

标签: java android

该应用程序基本上(截至目前)是一个登录/注册页面 我在切换活动时遇到问题...当我添加setOnClickListener时,应用程序崩溃了。

class LoginActivity extends AppCompatActivity {


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_login);


        configureBtnSignUp();
        configureBtnResetPassword();
    }


    private void configureBtnSignUp(){
        Button btnSignUp = (Button) findViewById(R.id.btn_signup);
        btnSignUp.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View view) {
                startActivity(new Intent(LoginActivity.this, SignUpActivity.class));
            }
        });
    }

    private void configureBtnResetPassword(){
        Button btnResetPassword = (Button) findViewById(R.id.btn_reset_password);
        btnResetPassword.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                startActivity(new Intent(LoginActivity.this, PwRecoverActivity.class));
            }
        });

    }


}

这是错误代码

Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.Button.setOnClickListener(android.view.View$OnClickListener)' on a null object reference
                      at kardacorporation.bandme.LoginActivity.configureBtnSignUp(LoginActivity.java:24)
                      at kardacorporation.bandme.LoginActivity.onCreate(LoginActivity.java:18)

2 个答案:

答案 0 :(得分:2)

原因是您正在尝试将听众设置为在您的布局中没有引用的按钮。

问题与btn_reset_password

有关

请确保您的布局中有一个ID为 btn_reset_password 的按钮

在您的activity_login中:

 <Button
     android:id="@+id/btn_reset_password"
     ...
 </Button>

很好的编码!

答案 1 :(得分:1)

根据Logcat,您的问题是

  

java.lang.NullPointerException:尝试在空对象引用上调用虚方法'void android.widget.Button.setOnClickListener(android.view.View $ OnClickListener)'

发生在

  

kardacorporation.bandme.LoginActivity。的 configureBtnSignUp (LoginActivity.java:24)`

因此我们应首先检查configureBtnSignUp方法。

确保您的xml代码中包含 btn_signup ID。

<Button
    android:id="@+id/btn_signup" 
    ...                         />

在调用configureBtnSignUp方法之前调用configureBtnResetPassword方法。

因此,您应该检查configureBtnResetPassword方法。

并确保您的xml代码中包含 btn_reset_password ID。

<Button
    android:id="@+id/btn_reset_password" 
    ...                         />