Кинжал конфликтует с посылкой - PullRequest
0 голосов
/ 15 января 2020

Поскольку я хочу отправлять данные в методе putExtra, я пытаюсь использовать аннотацию участков, когда добавляю @parcel к классу модели данных май, я улавливаю эти ошибки. перед добавлением @parcel в мой класс модели данных у меня нет ошибок.

ошибка: не удается найти класс символов DaggerApplicationComponent

ошибка: Parceler: нет конструктора, аннотированного @ParcelConstructor, и не найден конструктор пустого компонента по умолчанию.

это мое приложение класса (класс G)

    public class App extends Application {

    static ApplicationComponent component;

    @Override
    public void onCreate() {
        super.onCreate();

        component = DaggerApplicationComponent.builder()
                .androidModule(new AndroidModule(this))
                .build();
    }
    public static ApplicationComponent getComponent()
    {
        return component;
    }
}

, и это мой класс UserData (модель данных)

@Parcel
public class UserData {

    private int id;
    private String email;
    private String first_name;
    private   String last_name;
    private String avatar;

    public UserData(int id, String email, String first_name, String last_name, String avatar) {
        this.id = id;
        this.email = email;
        this.first_name = first_name;
        this.last_name = last_name;
        this.avatar = avatar;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getFirst_name() {
        return first_name;
    }

    public void setFirst_name(String first_name) {
        this.first_name = first_name;
    }

    public String getLast_name() {
        return last_name;
    }

    public void setLast_name(String last_name) {
        this.last_name = last_name;
    }

    public String getAvatar() {
        return avatar;
    }

    public void setAvatar(String avatar) {
        this.avatar = avatar;
    }
}

Ответы [ 2 ]

1 голос
/ 15 января 2020

Похоже, что парсер требует, чтобы у аннотированного класса был конструктор без параметров или аннотированный @ParcelConstructor. Я не думаю, что это имеет какое-либо отношение к кинжалу.

0 голосов
/ 17 января 2020

Кинжал не проблема. Вы получили ошибку

: не удается найти класс символов DaggerApplicationComponent

, так как произошел сбой процессора комментариев. Поэтому Dagger не может сгенерировать ваш DaggerApplicationComponent. Реальная проблема, как указано в ваших журналах, это ваш класс данных. Вам нужно аннотировать конструктор с помощью @ParcelConstructor:

@Parcel
public class UserData {

    private int id;
    private String email;
    private String first_name;
    private   String last_name;
    private String avatar;

    @ParcelConstructor
    public UserData(int id, String email, String first_name, String last_name, String avatar) {
        this.id = id;
        this.email = email;
        this.first_name = first_name;
        this.last_name = last_name;
        this.avatar = avatar;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getFirst_name() {
        return first_name;
    }

    public void setFirst_name(String first_name) {
        this.first_name = first_name;
    }

    public String getLast_name() {
        return last_name;
    }

    public void setLast_name(String last_name) {
        this.last_name = last_name;
    }

    public String getAvatar() {
        return avatar;
    }

    public void setAvatar(String avatar) {
        this.avatar = avatar;
    }
}
...