java.lang.NullPointerException:尝试调用虚拟方法“ android.text.Editable android.widget.EditText.getText()”

时间:2018-07-15 05:53:59

标签: java android

进入注册页面并输入详细信息后,应用程序崩溃,并出现空指针异常。我确实在网站上搜索了此问题,但找不到合适的解决方案。如果有人可以帮助我解决这个问题,那将是惊人的。

这是我的注册活动Java文件:

package universe.sk.syndriveapp;

import android.content.Intent;
import android.support.annotation.NonNull;
import android.support.v7.app.ActionBar;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.auth.AuthResult;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;

public class RegistrationActivity extends AppCompatActivity {

    private EditText etName,etEmailsign,etPassign,etBloodgroup,etDate;
    private Button btn_register;
    private TextView tvExist;
    private FirebaseAuth firebaseAuth;
    String name,email,password,bloodgrp,date;

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

        ActionBar actionBar = getSupportActionBar();
        actionBar.setTitle("SIGN UP");
        setupUIViews();

        firebaseAuth = FirebaseAuth.getInstance();
        btn_register.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                if(validate())
                {

                    String user_email = etEmailsign.getText().toString().trim();
                    String user_password = etPassign.getText().toString().trim();


                    //store in database:to be done after filling the contacts
                    firebaseAuth.createUserWithEmailAndPassword(user_email,user_password).addOnCompleteListener(new OnCompleteListener<AuthResult>() {
                        @Override
                        public void onComplete(@NonNull Task<AuthResult> task) {
                            if(task.isSuccessful()){
                                adduser();
                                Toast.makeText(RegistrationActivity.this, "Registration Successful!", Toast.LENGTH_SHORT).show();}
                            else
                                Toast.makeText(RegistrationActivity.this, "Registration Failed!", Toast.LENGTH_SHORT).show();
                        }
                    });


                    startActivity(new Intent(RegistrationActivity.this,NavigationActivity.class));
                }
            }
        });

        tvExist.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                startActivity(new Intent(RegistrationActivity.this,MainActivity.class));
            }
        });
    }


    private void setupUIViews()
    {
        etName = (EditText)findViewById(R.id.etName);
        etEmailsign =(EditText) findViewById(R.id.etEmailsign);
        etPassign =(EditText) findViewById(R.id.etPassign);
        btn_register = (Button)findViewById(R.id.btn_register);
        tvExist = (TextView)findViewById(R.id.tvExist);
        etDate =(EditText)findViewById(R.id.etDate);
etBloodgroup =(EditText)findViewById(R.id.etBloodgroup);

    }

    private Boolean validate()
    {
        Boolean result = false;

        name = etName.getText().toString();
        password = etPassign.getText().toString();
        email = etEmailsign.getText().toString();
        bloodgrp = etBloodgroup.getText().toString().trim();
        date = etDate.getText().toString().trim();

        if(name.isEmpty() || password.isEmpty() || email.isEmpty())
        {
            Toast.makeText(this, "Please enter all the details!", Toast.LENGTH_SHORT).show();
        }
        else
            result=true;
        return result;
    }

    private void adduser(){
        FirebaseDatabase firebaseDatabase = FirebaseDatabase.getInstance();
        DatabaseReference databaseusers= firebaseDatabase.getReference(firebaseAuth.getUid());
        Userinfo user = new Userinfo(name,bloodgrp,date,email,password);
        databaseusers.setValue(user);
    }
}

这是我的Userinfo Java文件:

package universe.sk.syndriveapp;

public class Userinfo {
    public String username;
    public String uemail;
    public String udate;
    public String upassword;
    public String bloodgroup;

    public Userinfo(String username, String uemail, String udate, String upassword, String bloodgroup) {
        this.username = username;
        this.uemail = uemail;
        this.udate = udate;
        this.upassword = upassword;
        this.bloodgroup = bloodgroup;
    }

    public String getUsername() {
        return username;
    }

    public String getUemail() {
        return uemail;
    }

    public String getUdate() {
        return udate;
    }

    public String getUpassword() {
        return upassword;
    }

    public String getBloodgroup() {
        return bloodgroup;
    }
}

这是我的XML文件:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".RegistrationActivity">


    <EditText
        android:id="@+id/etName"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginBottom="8dp"
        android:layout_marginEnd="8dp"
        android:layout_marginLeft="8dp"
        android:layout_marginRight="8dp"
        android:layout_marginStart="8dp"
        android:layout_marginTop="8dp"
        android:ems="10"
        android:hint="@string/user_name"
        android:inputType="textPersonName"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.503"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.106" />


    <EditText
        android:id="@+id/etDate"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginBottom="8dp"
        android:layout_marginEnd="8dp"
        android:layout_marginLeft="8dp"
        android:layout_marginRight="8dp"
        android:layout_marginStart="8dp"
        android:layout_marginTop="10dp"
        android:ems="10"
        android:hint="@string/date_of_birth"
        android:inputType="date" />


    <EditText
        android:id="@+id/etBloodGroup"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginBottom="8dp"
        android:layout_marginEnd="8dp"
        android:layout_marginLeft="8dp"
        android:layout_marginRight="8dp"
        android:layout_marginStart="8dp"
        android:layout_marginTop="10dp"
        android:ems="10"
        android:hint="@string/blood_group"
        android:inputType="text" />




    <EditText
        android:id="@+id/etEmailsign"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginEnd="8dp"
        android:layout_marginLeft="8dp"
        android:layout_marginRight="8dp"
        android:layout_marginStart="8dp"
        android:layout_marginTop="10dp"
        android:ems="10"
        android:hint="@string/email"
        android:inputType="textEmailAddress"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.503"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/etDate" />


    <EditText
        android:id="@+id/etPassign"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginBottom="8dp"
        android:layout_marginEnd="8dp"
        android:layout_marginLeft="8dp"
        android:layout_marginRight="8dp"
        android:layout_marginStart="8dp"
        android:layout_marginTop="10dp"
        android:ems="10"
        android:hint="@string/password"
        android:inputType="textPassword"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.503"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/etEmailsign"
        app:layout_constraintVertical_bias="0.08" />

    <EditText
        android:id="@+id/etConfirmPassign"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginBottom="8dp"
        android:layout_marginEnd="8dp"
        android:layout_marginLeft="8dp"
        android:layout_marginRight="8dp"
        android:layout_marginStart="8dp"
        android:layout_marginTop="10dp"
        android:ems="10"
        android:hint="@string/confirm_password"
        android:inputType="textPassword"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.503"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/etPassign"
        app:layout_constraintVertical_bias="0.08" />


    <Button
        android:id="@+id/btn_register"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginBottom="8dp"
        android:layout_marginEnd="8dp"
        android:layout_marginLeft="8dp"
        android:layout_marginStart="8dp"
        android:layout_marginTop="8dp"
        android:background="@color/colorPrimary"
        android:text="@string/next"
        android:textColor="#FFFFFF"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/etConfirmPassign"
        app:layout_constraintVertical_bias="0.132" />

    <TextView
        android:id="@+id/tvExist"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginBottom="8dp"
        android:layout_marginEnd="8dp"
        android:layout_marginLeft="8dp"
        android:layout_marginRight="8dp"
        android:layout_marginStart="8dp"
        android:layout_marginTop="8dp"
        android:gravity="center_horizontal"
        android:text="Already an existing member? Login"
        android:textSize="18sp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/btn_register" />
</LinearLayout>

错误:

java.lang.NullPointerException: Attempt to invoke virtual method 'android.text.Editable android.widget.EditText.getText()' on a null object reference
    at universe.sk.syndriveapp.RegistrationActivity.validate(RegistrationActivity.java:96)
    at universe.sk.syndriveapp.RegistrationActivity.access$000(RegistrationActivity.java:22)
    at universe.sk.syndriveapp.RegistrationActivity$1.onClick(RegistrationActivity.java:44)
    at android.view.View.performClick(View.java:5619)
    at android.view.View$PerformClick.run(View.java:22295)
    at android.os.Handler.handleCallback(Handler.java:754)
    at android.os.Handler.dispatchMessage(Handler.java:95)
    at android.os.Looper.loop(Looper.java:163)
    at android.app.ActivityThread.main(ActivityThread.java:6237)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:877)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)

1 个答案:

答案 0 :(得分:0)

您没有初始化etBloodgroup。这就是为什么您获得NullPointerException的原因。

正确初始化您的视图:

etBloodgroup =(EditText) findViewById(R.id.etBloodGroup);

还有另一个EditText,其ID为etConfirmPassign。您必须初始化要访问的所有视图。