我试图将此类放在Array中,然后将其发送到具有bundle.putParcelableArrayList的包中,对此有何提示?

这是我正在实现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楼 票数:1 已采纳

您将数据错误地添加到了意图中。 您正在调用startActivity(Intent, Bundle) 在这种情况下, BundlestartActivity()调用的选项。 你想这样做

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

之所以ClassNotFoundException是因为该框架正试图取消组合Bundle的选项,但由于它不在Android框架中而无法找到您的类。

  ask by wviana translate from so

未解决问题?本站智能推荐:

2回复

以新的意图调用相同的活动

我是Android的新手,使用Intent时遇到问题。 我希望你能帮助我。 我想在一个活动中打开一个带有按钮的对话框。 当您按下按钮时,它将再次加载相同的活动性,但会重置一些参数。 就像第一轮,然后第二轮。 我有一个结束对话框,因为它调用了另一个主动性而起作用,第二个对话框工作正常
2回复

如何启动新的意图/在处理程序中调用方法?

就我而言,如果来自蓝牙的strReceived与最终声明的字符串str匹配,则启动新的意图或调用方法以启动此意图时会strReceived 。 我该如何解决“无法从活动类型静态引用非静态方法getIntent()”。 我注意到我无法在处理程序之外引用此全局strReceived值:
1回复

为什么你会在新意图的额外内容中添加一个新包,直接在新意图上设置额外内容?

这里是Android的新手,我正在和一位资深人士就捆绑和意图进行辩论。 这就是我一直在做的...... 他说那是错的,你应该明确地创建一个新的bundle,然后将它传递给'putExtras',就像这样...... 但是,'putExtras'已经在内部创建了一个新的bundle,然后
5回复

如何在asynctask中调用意图?或如何在onPostExecute中启动新活动?

有人可以帮助我如何在onPostExecute中调用新活动或在asynctask中添加意图吗? 我的代码是这样的。 backgroundtask.java } MainActivity.java是我的登录类 我是android的新手,希望您能为我提供帮助..这段代码没有错误b
4回复

意图崩溃中的活动调用

嗨,大家好,这是我在下面的启动画面活动中的代码- 我不知道为什么,但是应用程序崩溃了,日志也没有显示任何错误。 在调试器模式下,我的控件在上面的代码行之后跳转到noClassDefFound和invocationTargetExceptio 。 i = new Intent(Spla
4回复

为什么从片段调用新的活动意图时出错?

试图从适配器调用,但我发现这是更正确的方法。 在“日志”中,一切都传输正确,并且我从适配器调用此方法。 反复尝试更改toContext(),但它也不起作用。 错误在这里: 在此代码中: 编辑1:从public class MyAdapter extends RecyclerVie
1回复

在新环境中打开意图

当我在Facebook应用程序中打开链接时,它为浏览器打开了一个新任务,而我可以切换回Facebook应用程序,而不必像普通的Activity一样在其内部打开浏览器。 但是,当我向应用程序的Google Play页面启动Intent时,它的行为就像应用程序中的“活动”,而不是为Google P
1回复

如何在FrameLayout中添加新的意图

我在android中有一个Tabs菜单: 我想开始一个新的意图并将其放入FrameLayout中(单击相应的选项卡时): 我这样尝试过: 但是结果是隐藏标签菜单的新活动。