📌  相关文章
📜  使用 Kotlin 在 Android 中将多个数据从一个 Activity 发送到另一个

📅  最后修改于: 2022-05-13 01:54:19.989000             🧑  作者: Mango

使用 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")}"
        }
    }
}


第 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")}"
        }
    }
}

这样我们的应用就准备好了。

输出: