我的Android应用程序一直崩溃,因为无法在我的Java类文件中呈现按钮小部件
我正在尝试在android应用程序中创建一个表单,在改型的帮助下使用API将表单提交到在线服务器。但我的应用程序在点击提交按钮后不断崩溃,出现以下错误我的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
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());
}
});
}