簡體   English   中英

為什么傳遞給另一個活動Serializable對象為null

[英]Why passed to another activity Serializable object is null

我已嘗試在活動之間傳遞對象,就像在Android上如何將對象從一個活動傳遞到另一個活動一樣

和SerializableTask正確創建,但是當我想在下一個活動中讀取它時,它是null。

    Task task = listOfTask.get(position);
    Log.i(TAG, "recyclerViewEditTask: edit clicked for title: " +
                                        task.getTitle());
    SerializabledTask sTask = new SerializabledTask(task.getTitle(),
        task.getDetails(), task.getTimeToDo(), task.getTag(),
        task.getId(), task.isDone());
    if(sTask == null)
        Log.e(TAG, "recyclerViewEditTask: sTask IS NULL");
    else {
        Log.i(TAG, "recyclerViewEditTask: sTaskInfo: " + sTask.toString());
        Intent editIntent = new Intent(ListOfTasksActivity.this, EditTaskActivity.class);
        editIntent.putExtra("task", sTask);
        startActivity(editIntent);

然后它進入另一個活動

嘗試獲取Serializable對象的活動:

Intent i = getIntent();
SerializabledTask sTask = (SerializabledTask) i.getSerializableExtra("task");
if(sTask == null)
    Log.e(TAG, "onCreate: sTASK IS NULL" );

並且“onCreate:sTASK IS NULL”正在調用

當我試圖傳遞單個字符串時,它正常工作

Serializables類:

public class SerializabledTask implements Serializable {

String title, details, timeToDo, tag;
int id;
boolean done;
Task task;

public SerializabledTask(String title, String details, String timeToDo, String tag, int id, boolean done) {
    this.title = title;
    this.details = details;
    this.timeToDo = timeToDo;
    this.tag = tag;
    this.id = id;
    this.done = done;
}

public String getTitle() {
    return title;
}

public void setTitle(String title) {
    this.title = title;
}

public String getDetails() {
    return details;
}

public void setDetails(String details) {
    this.details = details;
}

public String getTimeToDo() {
    return timeToDo;
}

public void setTimeToDo(String timeToDo) {
    this.timeToDo = timeToDo;
}

public String getTag() {
    return tag;
}

public void setTag(String tag) {
    this.tag = tag;
}

public int getId() {
    return id;
}

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

public boolean isDone() {
    return done;
}

public void setDone(boolean done) {
    this.done = done;
}

public Task getTask() {
    return task;
}

public void setTask(Task task) {
    this.task = task;
}

@Override
public String toString() {
    return "SerializabledTask{" +
            "title='" + title + '\'' +
            ", details='" + details + '\'' +
            ", timeToDo='" + timeToDo + '\'' +
            ", tag='" + tag + '\'' +
            ", id=" + id +
            ", done=" + done +
            ", task=" + task +
            '}';
}

您的模型類SerializableTask必須實現Serializable才能使代碼正常工作。

public class SerializableTask implements Serializable {
...
}

此外,強烈建議使用Parcelable而不是Serializable,因為它的速度要快得多。 資料來源: http//www.developerphil.com/parcelable-vs-serializable/

暫無
暫無

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

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