如何将值从 activity 传递到另一个 activity

How to pass the values from activity to another activity

因为我正在学习 Kotlin 进行 Android 开发,所以我现在正在尝试基本程序,例如 hello world 以及如何从一个 activity 导航到另一个 activity,那里这没问题。

当我从一个 activity 移动到另一个时,它工作正常,但我不知道如何在活动之间传递值。

我试图在一个 activity 中设置值并在另一个 activity 中检索它们,但它不起作用。

请看下面的代码片段

这是我的主要 activity,我从编辑文本和设置中获取用户名和密码到意图:

class MainActivity : AppCompatActivity() {
    val userName = null
    val password = null
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        button.setOnClickListener {
            val intent = Intent(this@MainActivity,SecondActivity::class.java);
            var userName = username.textø
            var password = password_field.text
            intent.putExtra("Username", userName)
            intent.putExtra("Password", password)
            startActivity(intent);
        }
    }
}

这是我的第二个 activity,我必须从主 activity

接收值
class SecondActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_second)
        var strUser: String = intent.getStringExtra("Username")
        var strPassword: String = intent.getStringExtra("Password")
        user_name.setText("Seelan")
        passwor_print.setText("Seelan")
    }
}

请指导我如何执行此操作,如果不是有意的话,我是否有其他方法可以在 Kotlin 中执行此操作。

我是移动端,你自己测试吧

尝试在 MainActivity 中将 CharSequence 变为 String,您放置的是 CharSequence 而不是 String,例如:

var userName = username.text.toString()
var password = password_field.text.toString()

您可以简单地使用 intents 和 bundle 将数据从一个 activity 发送到另一个 activity。

val intent = Intent(this@OneActivity,TwoActivity::class.java);
intent.putExtra("username", userName)
startActivity(intent);

在Kotlin中,你可以简单的通过Intents传递数据。您可以直接将数据放入 intent 中,也可以将这些数据写入 bundle 中,然后使用 intent 将该 bundle 发送到另一个 activity。

val intent = Intent(this@HomeActivity,ProfileActivity::class.java);
intent.putExtra("profileName", "John Doe")
var b = Bundle()
b.putBoolean("isActive", true)
intent.putExtras(b)
startActivity(intent);
    //On Click on Button 

    var but = findViewById<Button>(R.id.buttionActivity_two) as Button

            but.setOnClickListener {
    //Define intent 
                var intent = Intent(applicationContext,MainActivity::class.java)
// Here "first" is key and 123 is value                
intent.putExtra("first",123)
                startActivity(intent)

            }

        }

// If Get In Into Other Activity
var Intent1: Intent
Intent1= getIntent()
//Here first is key and 0 is default value
      var obj :Int  =  Intent1.getIntExtra("first",0);
      Log.d("mytag","VAlue is==>"+obj)

从 HomeActivity 发送值

val intent = Intent(this@HomeActivity,ProfileActivity::class.java)
intent.putExtra("Username","John Doe")
startActivity(intent)

在 ProfileActivity 中获取值

val profileName=intent.getStringExtra("Username")

首先你应该这样做,

var userName = username.text.toString()
var password = password_field.text.toString()

添加 Anko 依赖。

 implementation "org.jetbrains.anko:anko:0.10.4"

内部传递的信息 MainActivity() 就像

startActivity<SecondActivity>("Username" to userName,"Password" to password )

SecondActivity()获取信息是,

val profileName=intent.getStringExtra("Username")

您可以直接访问该值,而无需使用额外功能或意图。只需在 MainActivity 中使用伴随对象:

    companion object{
        val userName: String = String()
        val password: String = String()
    }

在 SecondActivity 中:

    var strUser: String = MainActivity.username
    var strPassword: String = MainActivity.password

并且您可以轻松访问多个活动的值。