【问题标题】:Pass ArrayList<ZipEntry> from one activity to another将 ArrayList<ZipEntry> 从一个活动传递到另一个活动
【发布时间】:2023-01-11 16:33:46
【问题描述】:

因此,对于我的一个个人项目,我想将 ZipEntry 对象的数组列表从一个活动传递到另一个活动,但我无法这样做。我尝试了以下内容:

  1. 创建 Bundle() 并使用 putExtra() 传递该包
  2. 使用 putExta() 直接传递 ArrayList

    使用 putExtra() 创建包并传递它:执行:

                // Add data to intent and launch install activity
                val newActIntent = Intent(this, InstallActivity::class.java)
                val data = Bundle()
                data.putSerializable("x", languageListAdapter.selectedItems)
                newActIntent.putExtra("z", data)
                this.startActivity(newActIntent)
    

    错误:

    java.lang.IllegalArgumentException: Parcel: unknown type for value split_config.en.apk
    

    使用 putExtra() 直接传递 ArrayList<>执行:

                val newActIntent = Intent(this, InstallActivity::class.java)
                newActIntent.putExtra("x", languageListAdapter.selectedItems)
                this.startActivity(newActIntent)
    

    错误:

    java.lang.IllegalArgumentException: Parcel: unknown type for value split_config.en.apk
    

    注意:ZipEntry 对象是 java.util.zip.ZipEntry

【问题讨论】:

  • 您的 ZipEntry 对象是可序列化的吗? (实现 Serializable 接口)。
  • 更新问题以解释什么是 ZipEntry

标签: android kotlin android-activity


【解决方案1】:

为了将ArrayList&lt;ZipEntry&gt;从一个Activity发送到另一个,您需要确保您的ZipEntry对象是可序列化的,您可以通过实现Serializable接口来实现。 您也可以使用 Parcelable 代替 Serializable

如果您使用Serializable,则使用getSerializableExtra,如果是Parcelable,则使用getParcelableArrayListExtra

@Parcelize
data class ZipEntry : Parcelable

【讨论】:

  • 我不太确定这将如何工作,因为我正在使用 java.util.zip.ZipEntry
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-03-15
  • 2015-12-18
  • 2012-08-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多