0

この例を使用してParcebleExtraを別のアクティビティに渡そうとしていますが、2番目のアクティビティでそれを取得しようとするとNullPointerExeceptionが表示され、誰かが私を助けてくれますか?

私の区画クラス:

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

putExtra()の代わりにIntent.putParcelableArrayListExtra()を使用し、getParcelableExtra()の代わりにgetParcelableArrayListExtra()を使用します。あなたもキャストを失う可能性があります、それはそれが爆破している場所かもしれません。

于 2013-03-26T20:43:38.373 に答える