【问题标题】:How to pass array list using intent in android如何在android中使用意图传递数组列表
【发布时间】:2026-02-14 06:55:01
【问题描述】:

如何使用 Intent 将数组列表从一个活动传递到另一个活动。

来自活动

 ArrayList<ServicesInfo> bookedService = new ArrayList<ServicesInfo>();`
  Intent intent = new Intent(getActivity() , Proceedtocart.class);
                intent.putExtra("Listview",bookedService);
                startActivity(intent);

到活动

 bookedService = (ArrayList<BookedInfo>) getIntent().getSerializableExtra("Listview");

运行时出现“java.lang.runtimeexception parcel无法编组值android”的错误

帮助解决这个问题

【问题讨论】:

  • 我在我的 ServiceInfo 数组中实现了 parcelable 但仍然出现同样的错误
  • 向我们展示您的ServiceInfo
  • 尝试intent.putParcelableArrayListExtra("key", my_list);。它会解决你的问题。为此,您需要使您的 ServiceInfo parceable。

标签: java android list android-intent


【解决方案1】:

试试这个:

Intent intent = new Intent(this, NextActivity.class);
intent.putStringArrayListExtra("Listview", bookedService);
startActivity(intent);

在 NextActivity 上:

yourArrayList = getIntent().getStringArrayListExtra("Listview");

【讨论】:

    【解决方案2】:

    你可以使用

    public class ContactInfo {
    
      private String name;
      private String surname;
      private int idx;
    
    // get and set methods
    }
    
    
    
     public class ContactInfo implements Parcelable {
    
          private String name;
          private String surname;
          private int idx;
    
        // get and set method
    
        @Override
            public int describeContents() {
            return 0;
        }
    
        @Override
        public void writeToParcel(Parcel dest, int flags) {
            dest.writeString(name);
            dest.writeString(surname);
            dest.writeInt(idx);
        }
    
        // Creator
        public static final Parcelable.Creator CREATOR
            = new Parcelable.Creator() {
            public ContactInfo createFromParcel(Parcel in) {
            return new ContactInfo(in);
        }
    
        public ContactInfo[] newArray(int size) {
            return new ContactInfo[size];
            }
        };
    
        // "De-parcel object
        public ContactInfo(Parcel in) {
            name = in.readString();
            surname = in.readString();
            idx = in.readInt();
        }
    } 
    

    Intent i = new Intent(MainActivity.this, ActivityB.class);
    // Contact Info
    ContactInfo ci = createContact("Francesco", "Surviving with android", 1);
    i.putExtra("contact", ci);
    

    获取

    Intent i = getIntent();
    
    ContactInfo ci = i.getExtras().getParcelable("contact");
    
    tv.setText(ci.toString()); // tv is a TextView instance
    

    【讨论】: