Dagger与包裹发生冲突

问题描述 投票:0回答:2

因为我想用putExtra方法发送数据,所以我尝试使用宗地批注,当我将@parcel添加到may数据模型类时,会捕获这些错误。在我的数据模型类上添加@parcel之前,我没有任何错误。

错误:找不到符号类DaggerApplicationComponent

错误:打包程序:否@ParcelConstructor注释的构造函数,也没有找到默认的空bean构造函数。

这是我的班级App(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;
    }
}
android dagger parcel
2个回答
1
投票

似乎,打包程序要求带注释的类具有不带参数的构造函数,或具有@ParcelConstructor注释的构造函数。我认为这与匕首无关。


0
投票

匕首不是问题。您得到了

错误:找不到符号类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;
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.