Fli*_*ker 2 android android-intent android-activity kotlin
我有 2 个活动,我想传递一个对象的数组列表并将其显示在 ListView 上
活动一:
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()
}
}
Run Code Online (Sandbox Code Playgroud)
活动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
}
Run Code Online (Sandbox Code Playgroud)
但我遇到了空指针异常
在您应用程序的 android 范围下的 build.gradle 中添加此内容并同步 gradle -
androidExtensions {
experimental = true
}
Run Code Online (Sandbox Code Playgroud)
然后按如下方式制作您的对象类 parceble -
@Parcelize
data class Persona() : Parcelable {
}
Run Code Online (Sandbox Code Playgroud)
现在您可以按意图发送和接收 Parcelable 列表。
更新:@Parcelize 现在不再是实验性的,请按照此答案更新实现/sf/answers/4544764311/
| 归档时间: |
|
| 查看次数: |
10983 次 |
| 最近记录: |