2013-03-26 84 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()。你也可以失去演員陣容,這可能是它炸燬的地方。

相關問題