2015-03-30 21 views
0

我试图把这个类放在一个Array中,并将它发送到一个捆绑包 bundle.putParcelableArrayList,关于它的任何提示?把一个ParcebleArrayList放到一个Bundle中调用一个新的intent

下面是我实现Parcelable

package neocom.dealerbook.model; 


import android.os.Parcel; 
import android.os.Parcelable; 

/** 
* Created by viana.wesley on 30/03/15. 
*/ 
public class LojaHeader implements Parcelable { 

    private int id; 
    private int idOriginal; 
    private int logo; 
    private String nome; 
    private String endereco; 

    public LojaHeader() { 
    } 

    public LojaHeader(Parcel source){ 
     id = source.readInt(); 
     idOriginal = source.readInt(); 
     logo = source.readInt(); 
     nome = source.readString(); 
     endereco = source.readString(); 
    } 

    @Override 
    public void writeToParcel(Parcel parcel, int i) { 
     parcel.writeInt(id); 
     parcel.writeInt(idOriginal); 
     parcel.writeInt(logo); 
     parcel.writeString(nome); 
     parcel.writeString(endereco); 
    } 

    @Override 
    public int describeContents() { 
     return 0; 
    } 


    public int getId() { 
     return id; 
    } 

    public void setId(int id) { 
     this.id = id; 
    } 

    public int getIdOriginal() { 
     return idOriginal; 
    } 

    public void setIdOriginal(int idOriginal) { 
     this.idOriginal = idOriginal; 
    } 

    public int getLogo() { 
     return logo; 
    } 

    public void setLogo(int logo) { 
     this.logo = logo; 
    } 

    public String getNome() { 
     return nome; 
    } 

    public void setNome(String nome) { 
     this.nome = nome; 
    } 

    public String getEndereco() { 
     return endereco; 
    } 

    public void setEndereco(String endereco) { 
     this.endereco = endereco; 
    } 

    public static final Parcelable.Creator<LojaHeader> CREATOR = new Parcelable.Creator<LojaHeader>(
     @Override 
     public LojaHeader createFromParcel(Parcel parcel) { 
      return new LojaHeader(parcel); 
     } 

     @Override 
     public LojaHeader[] newArray(int i) { 
      return new LojaHeader[i]; 
     } 
    }; 

} 

类下面是我如何调用这个意图。

public void callPointListActivity(View view) { 
     List<Marker> markers = mMap.getMarkers(); 
     ArrayList<LojaHeader> lojaHeaders = new ArrayList<>(); 
     Log.d(TAG, markers.toString()); 

     for (Marker m : markers){ 
      Loja loja = m.getData(); 
      lojaHeaders.add(loja.getLojaHeader()); 
     } 


     Intent intent = new Intent(getActivity(), PointListActivity.class); 
     Bundle bundle = new Bundle(); 
     bundle.putParcelableArrayList("LojaHeader", lojaHeaders); 
     startActivity(intent, bundle); 

    } 

我得到这个错误

Caused by: android.os.BadParcelableException: ClassNotFoundException when unmarshalling: neocom.dealerbook.model.LojaHeader 
      at android.os.Parcel.readException(Parcel.java:1474) 
      at android.os.Parcel.readException(Parcel.java:1426) 
      at android.app.ActivityManagerProxy.startActivity(ActivityManagerNative.java:2115) 
      at android.app.Instrumentation.execStartActivity(Instrumentation.java:1536) 
      at android.app.Activity.startActivityFromFragment(Activity.java:3957) 
      at android.app.Fragment.startActivity(Fragment.java:1050) 
      at neocom.dealerbook.MapFragment.callPointListActivity(MapFragment.java:701) 
      at neocom.dealerbook.MapActivity.callPointListActivity(MapActivity.java:95) 
            at java.lang.reflect.Method.invokeNative(Native Method) 
            at java.lang.reflect.Method.invoke(Method.java:515) 
            at android.view.View$1.onClick(View.java:3825) 
            at android.view.View.performClick(View.java:4445) 
            at android.view.View$PerformClick.run(View.java:18446) 
            at android.os.Handler.handleCallback(Handler.java:733) 
            at android.os.Handler.dispatchMessage(Handler.java:95) 
            at android.os.Looper.loop(Looper.java:136) 
            at android.app.ActivityThread.main(ActivityThread.java:5146) 
            at java.lang.reflect.Method.invokeNative(Native Method) 
            at java.lang.reflect.Method.invoke(Method.java:515) 
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:732) 
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:566) 
            at dalvik.system.NativeStart.main(Native Method) 

回答

1

你错误地添加数据的意图。你打电话给startActivity(Intent, Bundle)。在这种情况下,BundlestartActivity()呼叫的选项。要做到这一点,

Intent intent = new Intent(getActivity(), PointListActivity.class); 
intent.putParcelableArrayListExtra("LojaHeader", lojaHeaders); 
startActivity(intent); 

ClassNotFoundException是因为框架试图unparcel选项Bundle但无法找到你的类,因为它不是在Android框架。