0

我正在尝试使用此示例将 Parceble Extra 传递给另一个活动,但是当我尝试在我的第二个活动 NullPointerExeception 中获取它时,有人可以帮助我吗?

我的 Parcelable 类:

public class MetaDados implements Parcelable {

    private int codigoInstituicao;
        // . . .

    public MetaDados(int codigoInstituicao, int ano, String offlineUuid, String sigla, String nameInst,
            String startedDate, String name, String finishedDate, long size) {
        this.codigoInstituicao = codigoInstituicao;
        // . . .

    }

    public int getCodigoInstituicao() {
        return codigoInstituicao;
    }

    public void setCodigoInstituicao(int codigoInstituicao) {
        this.codigoInstituicao = codigoInstituicao;
    }

    //getters and setters . . .

    @Override
    public int describeContents() {
        // TODO Auto-generated method stub
        return 0;
    }

    @Override
    public void writeToParcel(Parcel dest, int flags) {
        dest.writeInt(codigoInstituicao);
        // . . .

    }

    public static final Parcelable.Creator<MetaDados> CREATOR = new Parcelable.Creator<MetaDados>() {
        public MetaDados createFromParcel(Parcel in) {
            return new MetaDados(in);
        }

        public MetaDados[] newArray(int size) {
            return new MetaDados[size];
        }
    };

    private MetaDados(Parcel in) {
        codigoInstituicao = in.readInt();
        //. . .
    }
}

我的 AsynkTask 如何开始我的其他活动:

ArrayList<MetaDados> metaDadosFull = new ArrayList<MetaDados>();
ArrayList<MetaDados> metaDadosPres = new ArrayList<MetaDados>();

Intent it = new Intent(activity, DownloadSelectionActivity.class);
            it.putExtra("metaDadosFull", metaDadosFull);
            it.putExtra("metaDadosPres", metaDadosPres);

            activity.startActivity(it);

还有我尝试获取它的 DownloadSelectionActivity:

ArrayList<MetaDados> fullList = (ArrayList<MetaDados>) getIntent().getParcelableExtra("metaDadosFull");

        for (MetaDados metaDados : fullList) {
            Log.d(Constants.DOWNLOAD_SELECTED_ACTIVITY, metaDados.getName());
        }

        ArrayList<MetaDados> presList = (ArrayList<MetaDados>) getIntent().getParcelableExtra("metaDadosPres");

        for (MetaDados metaDados : presList) {
            Log.d(Constants.DOWNLOAD_SELECTED_ACTIVITY, metaDados.getName());
        }
4

1 回答 1

2

使用 Intent.putParcelableArrayListExtra() 代替 putExtra(),并使用 getParcelableArrayListExtra() 代替 getParcelableExtra()。你也可以失去演员表,这可能是它爆炸的地方。

于 2013-03-26T20:43:38.373 回答