Я использую retrofit2 в Android.
Я создаю UserModel и AuthModel и вызываю метод из своей активности на сервер;
UserModel.class
public class UserModel {
public String fullName;
public String about;
public String userName;
public String password;
public Date createDate;
public Date lastSeen;
public String phonenumber;
...
}
AothModel.class
public class AuthModel {
public UserModel user;
public TokenModel token;
public ErrorResponseModel errorResponse;
...
}
И моя деятельность
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_singup);
edtPhone = (EditText)findViewById(R.id.edtphone);
AuthModel authModel = new AuthModel();
authModel.user.phonenumber = edtPhone.getText().toString();
Toast.makeText(SingUpActivity.this,authModel.user.phonenumber,
Toast.LENGTH_SHORT).show();
Я устанавливаю текст в переменной модели UserModel.phonenumber и тестирую его.
Ошибка:
Attempt to write to field
'java.lang.String com.mychat.models.UserModel.phonenumber'on anullobject reference
Ошибка возникает из-за того, что вы не создали экземпляр UserModel в AuthModel. Вы инициализировали AuthModel, но он не создает экземпляр UserModel автоматически. Вот почему он выдает исключение NullPointerException всякий раз, когда вы пытаетесь получить доступ к каким-либо свойствам в UserModel, потому что это просто null.
Измените свой код следующим образом:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_singup);
edtPhone=(EditText)findViewById(R.id.edtphone);
AuthModel authModel=new AuthModel();
UserModel userModel = new UserModel();
authModel.setUserModel(userModel);
authModel.user.phonenumber = edtPhone.getText().toString();
Toast.makeText(SingUpActivity.this,authModel.user.phonenumber, Toast.LENGTH_SHORT).show();
или вы можете просто создать конструктор в AuthModel, который принимает новую UserModel в качестве аргумента.
Вы не инициализировали переменную user модели AuthModel
Итак, user - это null, и он дает ошибку
'java.lang.String com.mychat.models.UserModel.phonenumber' on a null object reference
Измените свой код и инициализируйте переменную user для authModel
AuthModel authModel = new AuthModel();
UserModel userModel = new UserModel();
authModel.user = userModel;
authModel.user.phonenumber = edtPhone.getText().toString();
authModel.user имеет значение null. Создайте его экземпляр, написав authModel.user = new UserModel (); а затем присвойте номер телефона