使用 Kotlin 在 Android 中将多个数据从一个 Activity 发送到另一个
在 Android 中,有多种方法可以将多个数据从一个 Activity 发送到另一个,但在本文中,我们将使用Bundle来实现。 Android中的Bundle用于将数据从一个活动传递到另一个活动,它以键和值对的形式获取数据。为了理解这个概念,我们将使用 Kotlin 在 android studio 中创建一个简单的项目。
分步实施
第 1 步:创建一个新项目
要在 Android Studio 中创建新项目,请参阅在 kotlin 的 android studio 中创建新项目。
第 2 步:使用 activity_main.xml 文件
导航到app > res > layout > activity_main.xml并将以下代码添加到该文件。下面是 activity_main.xml 文件的代码。
XML
Kotlin
package com.ayush.serialize_deserialize
import android.content.Intent
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.Button
import android.widget.EditText
class MainActivity : AppCompatActivity() {
lateinit var etId: EditText
lateinit var etName: EditText
lateinit var etRoll: EditText
lateinit var btnSend: Button
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
etId = findViewById(R.id.etId)
etName = findViewById(R.id.etName)
etRoll = findViewById(R.id.etRoll)
btnSend = findViewById(R.id.btnSend)
btnSend.setOnClickListener {
val bundle = Bundle()
bundle.putString("id", etId.text.toString())
bundle.putString("name", etName.text.toString())
bundle.putString("roll", etRoll.text.toString())
val intent = Intent(this, SecondActivity::class.java)
intent.putExtras(bundle)
startActivity(intent)
}
}
}
XML
Kotlin
package com.ayush.serialize_deserialize
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.TextView
class SecondActivity : AppCompatActivity() {
lateinit var tvId : TextView
lateinit var tvName : TextView
lateinit var tvRoll : TextView
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_second)
tvId = findViewById(R.id.tvId)
tvName = findViewById(R.id.tvName)
tvRoll= findViewById(R.id.tvRoll)
val bundle = intent.extras
if (bundle != null){
tvId.text = "id = ${bundle.getString("id")}"
tvName.text = "Name = ${bundle.getString("name")}"
tvRoll.text = "RollNo = ${bundle.getString("roll")}"
}
}
}
Note: We have also included vector images in the drawable folder, if want to use ImageView you also need to add a vector image.
第 3 步:使用 MainActivity.kt 文件
转到 MainActivity.kt 文件并参考以下代码。下面是 MainActivity.kt 文件的代码。代码中添加了注释以更详细地理解代码。
科特林
package com.ayush.serialize_deserialize
import android.content.Intent
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.Button
import android.widget.EditText
class MainActivity : AppCompatActivity() {
lateinit var etId: EditText
lateinit var etName: EditText
lateinit var etRoll: EditText
lateinit var btnSend: Button
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
etId = findViewById(R.id.etId)
etName = findViewById(R.id.etName)
etRoll = findViewById(R.id.etRoll)
btnSend = findViewById(R.id.btnSend)
btnSend.setOnClickListener {
val bundle = Bundle()
bundle.putString("id", etId.text.toString())
bundle.putString("name", etName.text.toString())
bundle.putString("roll", etRoll.text.toString())
val intent = Intent(this, SecondActivity::class.java)
intent.putExtras(bundle)
startActivity(intent)
}
}
}
第 4 步:使用 activity_second.xml 文件
导航到app > res > layout > activity_second.xml并将以下代码添加到该文件。下面是 activity_main.xml 文件的代码。
XML
第 5 步:使用 SecondActivity.kt 文件
转到SecondActivity.kt文件并参考以下代码。下面是 MainActivity.kt 文件的代码。代码中添加了注释以更详细地理解代码。
科特林
package com.ayush.serialize_deserialize
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.TextView
class SecondActivity : AppCompatActivity() {
lateinit var tvId : TextView
lateinit var tvName : TextView
lateinit var tvRoll : TextView
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_second)
tvId = findViewById(R.id.tvId)
tvName = findViewById(R.id.tvName)
tvRoll= findViewById(R.id.tvRoll)
val bundle = intent.extras
if (bundle != null){
tvId.text = "id = ${bundle.getString("id")}"
tvName.text = "Name = ${bundle.getString("name")}"
tvRoll.text = "RollNo = ${bundle.getString("roll")}"
}
}
}
这样我们的应用就准备好了。
输出: