如何将Parcelable Extra传递给另一个活动

时间:2013-03-26 20:35:04

标签: android

我正在尝试使用this example将Parceble Extra传递给另一个活动,但是当我尝试在我的第二个活动NralPointerExeception出现时,有人可以帮助我吗?

我的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());
        }

1 个答案:

答案 0 :(得分:2)

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