簡體   English   中英

如何在Android上的Realm中使用構造函數

[英]How to use constructor in Realm on Android

我想在Android中使用Realm for Database ,並且我創建了provider class以保存值但是當在主類( activity )中使用此類構造函數時顯示此錯誤,請參閱此圖像中的錯誤錯誤圖像鏈接

Task_Provider類:

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;

}

主要活動 (按鈕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();

我該如何解決這個問題? tnx all <3

編輯:構造函數確實工作並提供自Realm 2.0.0以來的默認值。


先前:

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;
}

這不起作用,因為Realm-Transformer在調用super()之前無法執行RealmProxy的構造函數,所以正確的做法曾經是

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;
}

那你可以做

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM