ошибка вставки из textbox.gettext () в мою модель в androd - PullRequest
0 голосов
/ 09 января 2019

Я использую 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();

Я установил текст в текстовом поле и протестировал его. Ошибка Попытка записи в поле 'java.lang.String com.mychat.models.UserModel.phonenumber' для ссылки на пустой объект

1 Ответ

0 голосов
/ 09 января 2019

Ошибка возникает из-за того, что вы не создали 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 в качестве аргумента.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...