How to use constructor in Realm on Android

最后都变了- 提交于 2020-01-15 23:54:47

问题


I want use Realm for Database in android, and i create provider class to save values but when use this class constructor in main class (activity) show me this error, please see error from this image : Error image Link

Task_Provider class :

public class Task_Provider extends RealmObject {

    public Task_Provider() {
    }

    public String getAddTask() {
        return addTask;
    }

    public void setAddTask(String addTask) {
        this.addTask = addTask;
    }

    public long getAdded_date() {
        return added_date;
    }

    public void setAdded_date(long added_date) {
        this.added_date = added_date;
    }

    public long getWhen_date() {
        return when_date;
    }

    public void setWhen_date(long when_date) {
        this.when_date = when_date;
    }

    public boolean isComplete() {
        return complete;
    }

    public void setComplete(boolean complete) {
        this.complete = complete;
    }

    public Task_Provider(String addTask, long added_date, long when_date, boolean complete) {
        this.addTask = addTask;
        this.added_date = added_date;
        this.when_date = when_date;
        this.complete = complete;
    }

    private String addTask;
    @PrimaryKey
    private long added_date;
    private long when_date;
    private boolean complete;

}

Main Activity (Button setOnClickListener) :

String addTask = dialog_edit_task.getText().toString();
long now = System.currentTimeMillis();
RealmConfiguration realmConfiguration = new RealmConfiguration.Builder(getActivity()).build();
Realm.setDefaultConfiguration(realmConfiguration);
Realm realm = Realm.getDefaultInstance();
Task_Provider task_provider = new Task_Provider(addTask, now, 0, false);

realm.beginTransaction();
realm.copyToRealm(task_provider);
realm.commitTransaction();
realm.close();

How can i fix this problem? tnx all <3


回答1:


EDIT: Constructors do work and provide default values since Realm 2.0.0.


Previously:

public Task_Provider(String addTask, long added_date, long when_date, boolean complete) {
    this.addTask = addTask;
    this.added_date = added_date;
    this.when_date = when_date;
    this.complete = complete;
}

This didn't work because the Realm-Transformer couldn't execute the constructor for a RealmProxy before calling super(), so the right way to do it used to be

public Task_Provider() {
}


public static Task_Provider create(String addTask, long added_date, long when_date, boolean complete) {
    Task_Provider taskProvider = new Task_Provider();
    taskProvider.addTask = addTask;
    taskProvider.added_date = added_date;
    taskProvider.when_date = when_date;
    taskProvider.complete = complete;
    return taskProvider;
}

Then you can do

Task_Provider taskProvider = Task_Provider.create(...);


来源:https://stackoverflow.com/questions/36261888/how-to-use-constructor-in-realm-on-android

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!