2013-03-26 86 views
0

我试图将一个Parceble Extra传递给另一个使用this example的活动,但是当我尝试在第二个活动中获得它时,NullPointerExeception会显示出来,有人能帮助我吗?如何传递一个Parcelable Extra到另一个活动

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

回答

2

使用意向。 putParcelableArrayListExtra()代替putExtra(),getParcelableArrayListExtra()代替getParcelabl eExtra()。你也可以失去演员阵容,这可能是它炸毁的地方。

相关问题