我的Android应用程序一直崩溃,因为无法在我的Java类文件中呈现按钮小部件

我的Android应用程序一直崩溃,因为无法在我的Java类文件中呈现按钮小部件,java,android,Java,Android,我正在尝试在android应用程序中创建一个表单,在改型的帮助下使用API将表单提交到在线服务器。但我的应用程序在点击提交按钮后不断崩溃,出现以下错误 E/AndroidRuntime: FATAL EXCEPTION: main Process: com.example.namtaxsenumerator, PID: 13907 java.lang.NullPointerException: Attempt to invoke virtual method 'android.t

我正在尝试在android应用程序中创建一个表单,在改型的帮助下使用API将表单提交到在线服务器。但我的应用程序在点击提交按钮后不断崩溃,出现以下错误

E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.namtaxsenumerator, PID: 13907
    java.lang.NullPointerException: Attempt to invoke virtual method 'android.text.Editable com.google.android.material.textfield.TextInputEditText.getText()' on a null object reference
        at com.example.namtaxsenumerator.MainActivity.createRequest(MainActivity.java:196)
        at com.example.namtaxsenumerator.MainActivity$1.onClick(MainActivity.java:84)
        at android.view.View.performClick(View.java:7156)
        at com.google.android.material.button.MaterialButton.performClick(MaterialButton.java:992)
        at android.view.View.performClickInternal(View.java:7129)
        at android.view.View.access$3500(View.java:803)
        at android.view.View$PerformClick.run(View.java:27543)
        at android.os.Handler.handleCallback(Handler.java:883)
        at android.os.Handler.dispatchMessage(Handler.java:100)
        at android.os.Looper.loop(Looper.java:264)
        at android.app.ActivityThread.main(ActivityThread.java:7581)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:980)
这是我的主要活动课

package com.example.enumerator;

import androidx.appcompat.app.AppCompatActivity;

import android.app.DatePickerDialog;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.Spinner;
import android.widget.Toast;

import com.google.android.material.textfield.TextInputEditText;

import java.util.Calendar;

import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;

public class MainActivity extends AppCompatActivity {
    TextInputEditText FullName;
    TextInputEditText StickerNumber;
    TextInputEditText Address;
    TextInputEditText Email;
    TextInputEditText Phone;
    TextInputEditText Nationality;
    Spinner State;
    TextInputEditText LGA;
    TextInputEditText RC;
    TextInputEditText DriversLicenseNo;
    TextInputEditText LicenseIssued;
    TextInputEditText LicenseExpiry;
    Spinner VehicleType;
    TextInputEditText VehicleLicense;
    TextInputEditText VehicleTyres;
    TextInputEditText LGAofOperation;
    TextInputEditText NOKFullName;
    TextInputEditText NOKAddress;
    TextInputEditText NOKPhone;
    TextInputEditText NOKEmail;
    TextInputEditText NOKNationality;
    Spinner NOKState;
    DatePickerDialog datePickerDialog;
    Button reset;
    Button submit;


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

        TextInputEditText FullName = (TextInputEditText)findViewById(R.id.FullName);
        TextInputEditText StickerNumber = (TextInputEditText)findViewById(R.id.StickerNumber);
        TextInputEditText Address = (TextInputEditText)findViewById(R.id.Address);
        TextInputEditText Email = (TextInputEditText)findViewById(R.id.Email);
        TextInputEditText Phone = (TextInputEditText)findViewById(R.id.Phone);
        TextInputEditText Nationality = (TextInputEditText)findViewById(R.id.Nationality);
        Spinner State = (Spinner)findViewById(R.id.State);
        TextInputEditText LGA = (TextInputEditText)findViewById(R.id.LGA);
        TextInputEditText RC = (TextInputEditText)findViewById(R.id.RC);
        TextInputEditText DriversLicenseNo = (TextInputEditText)findViewById(R.id.DriversLicenseNo);
        TextInputEditText LicenseIssued = (TextInputEditText)findViewById(R.id.LicenseIssued);
        TextInputEditText LicenseExpiry = (TextInputEditText)findViewById(R.id.LicenseExpiry);
        Spinner VehicleType = (Spinner)findViewById(R.id.VehicleType);
        TextInputEditText VehicleLicense = (TextInputEditText)findViewById(R.id.VehicleLicense);
        TextInputEditText VehicleTyres = (TextInputEditText)findViewById(R.id.VehicleTyres);
        TextInputEditText LGAofOperation = (TextInputEditText)findViewById(R.id.LGAofOperation);
        TextInputEditText NOKFullName = (TextInputEditText)findViewById(R.id.NOKFullName);
        TextInputEditText NOKAddress = (TextInputEditText)findViewById(R.id.NOKAddress);
        TextInputEditText NOKPhone = (TextInputEditText)findViewById(R.id.NOKPhone);
        TextInputEditText NOKEmail = (TextInputEditText)findViewById(R.id.NOKEmail);
        TextInputEditText NOKNationality = (TextInputEditText)findViewById(R.id.NOKNationality);
        Spinner NOKState = (Spinner)findViewById(R.id.NOKState);

        //Submit Button
        Button submit = (Button)findViewById(R.id.submit);

        submit.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                saveUser(createRequest());
            }
        });


    public UserRequest createRequest(){
        UserRequest userRequest = new UserRequest();
        userRequest.setStickerNumber(StickerNumber.getText().toString());
        userRequest.setFullName(FullName.getText().toString());
        userRequest.setAddress(Address.getText().toString());
        userRequest.setEmail(Email.getText().toString());
        userRequest.setPhone(Phone.getText().toString());
        userRequest.setNationality(Nationality.getText().toString());
        userRequest.setState(State.getSelectedItem().toString());
        userRequest.setLGA(LGA.getText().toString());
        userRequest.setRC(RC.getText().toString());
        userRequest.setDriversLicenseNo(DriversLicenseNo.getText().toString());
        userRequest.setLicenseIssued(LicenseIssued.getText().toString());
        userRequest.setLicenseExpiry(LicenseExpiry.getText().toString());
        userRequest.setVehicleType(VehicleType.getSelectedItem().toString());
        userRequest.setVehicleLicense(VehicleLicense.getText().toString());
        userRequest.setVehicleTyres(VehicleTyres.getText().toString());
        userRequest.setLGAofOperation(LGAofOperation.getText().toString());
        userRequest.setNOKFullName(NOKFullName.getText().toString());
        userRequest.setNOKAddress(NOKAddress.getText().toString());
        userRequest.setNOKPhone(NOKPhone.getText().toString());
        userRequest.setNOKEmail(NOKEmail.getText().toString());
        userRequest.setNOKNationality(NOKNationality.getText().toString());
        userRequest.setNOKState(NOKState.getSelectedItem().toString());

        return userRequest;
    }

    public void saveUser(UserRequest userRequest){
        Call<UserResponse> userResponseCall = ApiClient.getUserService().saveUser(userRequest);
        userResponseCall.enqueue(new Callback<UserResponse>() {
            @Override
            public void onResponse(Call<UserResponse> call, Response<UserResponse> response) {
                if (response.isSuccessful()){
                    Toast.makeText(MainActivity.this, "Registration Successfull!", Toast.LENGTH_LONG).show();
                }else {
                    Toast.makeText(MainActivity.this, "Registration Failed!", Toast.LENGTH_LONG).show();
                }
            }

            @Override
            public void onFailure(Call<UserResponse> call, Throwable t) {
                Toast.makeText(MainActivity.this, "Registration Successfull!" +t.getLocalizedMessage(), Toast.LENGTH_LONG).show();
            }
        });
    }
}

我不知道我的代码哪里出错了,因为我整晚都在检查和研究。

这是因为您不是在初始化变量,而是在onCreate上创建新的变量,其范围在onCreate内

因此,您在onCreate之外声明的变量总是空的,并且您会得到异常

在onCreate方法代码中进行这些更改,它将正常工作

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

    FullName = (TextInputEditText)findViewById(R.id.FullName);
    StickerNumber = (TextInputEditText)findViewById(R.id.StickerNumber);
    Address = (TextInputEditText)findViewById(R.id.Address);
    Email = (TextInputEditText)findViewById(R.id.Email);
    Phone = (TextInputEditText)findViewById(R.id.Phone);
    Nationality = (TextInputEditText)findViewById(R.id.Nationality);
    State = (Spinner)findViewById(R.id.State);
    LGA = (TextInputEditText)findViewById(R.id.LGA);
    RC = (TextInputEditText)findViewById(R.id.RC);
    DriversLicenseNo = (TextInputEditText)findViewById(R.id.DriversLicenseNo);
    LicenseIssued = (TextInputEditText)findViewById(R.id.LicenseIssued);
    LicenseExpiry = (TextInputEditText)findViewById(R.id.LicenseExpiry);
    VehicleType = (Spinner)findViewById(R.id.VehicleType);
    VehicleLicense = (TextInputEditText)findViewById(R.id.VehicleLicense);
    VehicleTyres = (TextInputEditText)findViewById(R.id.VehicleTyres);
    LGAofOperation = (TextInputEditText)findViewById(R.id.LGAofOperation);
    NOKFullName = (TextInputEditText)findViewById(R.id.NOKFullName);
    NOKAddress = (TextInputEditText)findViewById(R.id.NOKAddress);
    NOKPhone = (TextInputEditText)findViewById(R.id.NOKPhone);
    NOKEmail = (TextInputEditText)findViewById(R.id.NOKEmail);
    NOKNationality = (TextInputEditText)findViewById(R.id.NOKNationality);
    NOKState = (Spinner)findViewById(R.id.NOKState);

    //Submit Button
    Button submit = (Button)findViewById(R.id.submit);

    submit.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            saveUser(createRequest());
        }
    });
}