如何将ArrayList 发送到其他Fragment / Activity而不初始化(启动)下一个Activity?

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

我有一个ArrayList,我需要将其发送到另一个片段。我尝试使用Parcelable,但是要发送数据,我需要启动片段的“ startIntent”方法。我不希望片段开始。

我需要将数据数组列表对象发送到另一个片段转到另一个片段。我只需要发送数据。用户可以自由选择何时在活动/片段之间进行切换。并且先前发送的数据应该已经存在。

使用Parcelable的示例:

必须发送的类:

import android.os.Parcel;
import android.os.Parcelable;

public class Doenca implements Parcelable {

    private String nome;
    private String causa;
    private String efeito;
    private String cuidados;
    private String prevencao;
    private String categoria;

    public Doenca(String nome, String causa, String efeito, String cuidados, String prevencao, String categoria) {
        this.nome = nome;
        this.causa = causa;
        this.efeito = efeito;
        this.cuidados = cuidados;
        this.prevencao = prevencao;
        this.categoria = categoria;
    }

    protected Doenca(Parcel in) {
        nome = in.readString();
        causa = in.readString();
        efeito = in.readString();
        cuidados = in.readString();
        prevencao = in.readString();
        categoria = in.readString();
    }

    public static final Creator<Doenca> CREATOR = new Creator<Doenca>() {
        @Override
        public Doenca createFromParcel(Parcel in) {
            return new Doenca(in);
        }

        @Override
        public Doenca[] newArray(int size) {
            return new Doenca[size];
        }
    };

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public String getCausa() {
        return causa;
    }

    public void setCausa(String causa) {
        this.causa = causa;
    }

    public String getEfeito() {
        return efeito;
    }

    public void setEfeito(String efeito) {
        this.efeito = efeito;
    }

    public String getCuidados() {
        return cuidados;
    }

    public void setCuidados(String cuidados) {
        this.cuidados = cuidados;
    }

    public String getPrevencao() {
        return prevencao;
    }

    public void setPrevencao(String prevencao) {
        this.prevencao = prevencao;
    }

    public String getCategoria() {
        return categoria;
    }

    public void setCategoria(String categoria) {
        this.categoria = categoria;
    }

    @Override
    public int describeContents() {
        return 0;
    }

    @Override
    public void writeToParcel(Parcel dest, int flags) {
        dest.writeString(nome);
        dest.writeString(causa);
        dest.writeString(efeito);
        dest.writeString(cuidados);
        dest.writeString(prevencao);
        dest.writeString(categoria);
    }
}


import android.os.Parcel;
import android.os.Parcelable;

public class Doenca implements Parcelable {

    private String nome;
    private String causa;
    private String efeito;
    private String cuidados;
    private String prevencao;
    private String categoria;

    public Doenca(String nome, String causa, String efeito, String cuidados, String prevencao, String categoria) {
        this.nome = nome;
        this.causa = causa;
        this.efeito = efeito;
        this.cuidados = cuidados;
        this.prevencao = prevencao;
        this.categoria = categoria;
    }

    protected Doenca(Parcel in) {
        nome = in.readString();
        causa = in.readString();
        efeito = in.readString();
        cuidados = in.readString();
        prevencao = in.readString();
        categoria = in.readString();
    }

    public static final Creator<Doenca> CREATOR = new Creator<Doenca>() {
        @Override
        public Doenca createFromParcel(Parcel in) {
            return new Doenca(in);
        }

        @Override
        public Doenca[] newArray(int size) {
            return new Doenca[size];
        }
    };

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public String getCausa() {
        return causa;
    }

    public void setCausa(String causa) {
        this.causa = causa;
    }

    public String getEfeito() {
        return efeito;
    }

    public void setEfeito(String efeito) {
        this.efeito = efeito;
    }

    public String getCuidados() {
        return cuidados;
    }

    public void setCuidados(String cuidados) {
        this.cuidados = cuidados;
    }

    public String getPrevencao() {
        return prevencao;
    }

    public void setPrevencao(String prevencao) {
        this.prevencao = prevencao;
    }

    public String getCategoria() {
        return categoria;
    }

    public void setCategoria(String categoria) {
        this.categoria = categoria;
    }

    @Override
    public int describeContents() {
        return 0;
    }

    @Override
    public void writeToParcel(Parcel dest, int flags) {
        dest.writeString(nome);
        dest.writeString(causa);
        dest.writeString(efeito);
        dest.writeString(cuidados);
        dest.writeString(prevencao);
        dest.writeString(categoria);
    }
}

android android-intent parcelable
1个回答
0
投票

有多种实现方式,它们具有不同的复杂性。

  1. 使用数据库存储您需要的内容
  2. 将数据存储在包含选项卡的主机活动中。切换片段后,您所需要做的就是从存储它的位置读取数据。
  3. 使用LiveData。 LiveData是我个人的喜好。您可以在此处轻松存储所需的任何数据,第二个片段只是观察实时数据并可以轻松地对更改做出反应。因此,您甚至可以根据需要频繁地双向切换。
© www.soinside.com 2019 - 2024. All rights reserved.