android - 如何在 Kotlin 中将对象列表从 Activity A 传递到 Activity B?

标签 android kotlin android-intent android-activity

我有 2 个 Activity ,我想传递一个对象的数组列表并将其显示在 ListView 上

Activity A:

     btnGuardar.setOnClickListener{

                if(edtNombre.text.toString().equals("") || 
                     edtApellido.text.toString().equals("") || 
                     edtFecha.text.toString().equals("")){

                    Toast.makeText(this@Main2Activity, "Debes llenar todos los campos!", Toast.LENGTH_SHORT).show()
                }else{
                    var estadoSel : String
                    estadoSel = estado.onItemSelectedListener.toString()
                   var per = Persona(edtNombre.text.toString(),edtApellido.text.toString(),estadoSel,edtFecha.text.toString())
                    personas.add(per)
                    val intent = Intent(this@Main2Activity,Main3Activity::class.java)
                    //intent.putExtra("Personas",  personas as Serializable)
                    intent.putParcelableArrayListExtra("Personas", ArrayList(personas))
                    edtFecha.text = null
                    edtApellido.text = null
                    edtNombre.text = null
                    estado.setSelection(0)
                    Toast.makeText(this@Main2Activity, "Registro Guardado", Toast.LENGTH_SHORT).show()
                }
            }

Activity B:

 override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main3)
        supportActionBar?.setDisplayHomeAsUpEnabled(true)
        //val intent = Intent()
        val bundle = getIntent().extras
        var arr  = bundle?.getParcelableArrayList<Persona>("Personas")!!
        //var arr : ArrayList<Persona> = (ArrayList<Persona>())intent.getSerializableExtra("Personas")
        //intent.getSerializableExtra("Personas")
        //arr = intent.extras!!.get("Personas")
        val adapter = ArrayAdapter(this, android.R.layout.simple_list_item_1, arr)
        listaPersonas.adapter = adapter
    }

但是我得到一个空指针异常

最佳答案

在你的应用程序的 build.gradle 中,在 android 作用域下添加这个并同步 gradle -

androidExtensions {
        experimental = true
    }

然后按如下方式创建您的对象类 parceble -

@Parcelize
data class Persona() : Parcelable {

}

现在您可以按 Intent 发送和接收 Parcelable 列表。

更新:@Parcelize 现在不再是实验性的,请按照此答案更新实现 https://stackoverflow.com/a/64925204/9854554

关于android - 如何在 Kotlin 中将对象列表从 Activity A 传递到 Activity B?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58297275/

相关文章:

java - Android RAM页面大小?

android - Proguard 中的自定义混淆类名

android - 如何在 xml 中更改回收器 View 的方向?

android - 如何阻止动画重复 - 布局动画

android - 在android Activity 之间发送多个数据的问题

android - 在 Android app_project 中读写 SQLite 数据库

android - DetachCurrentThread 有时会在 NDK 中崩溃

android - 无法将从相机点击的图像上传到服务器

android - Intent 过滤器适用于模拟器,但不适用于设备

java - 如何在 Android 中获取铃声名称?