如何将值从活动传递到kotlin中的另一个活动

Jey*_*lan 16 kotlin kotlin-android-extensions

当我正在学习Kotlin进行Android开发时,我现在正在尝试像hello world这样的基本程序以及如何从一个活动导航到另一个活动,这里没有问题

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

我厌倦了在一个活动中设置值并在另一个活动中检索它不起作用

请参阅下面的代码段

这是我的主要活动,我从编辑文本和设置到意图的用户名和密码

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);
    }
}
Run Code Online (Sandbox Code Playgroud)

}

这是我的第二个活动,我必须从主要活动接收值

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

    }
}
Run Code Online (Sandbox Code Playgroud)

请指导我如何做到这一点,无论我是否有其他方式在kotlin这样做,如果不是故意

先感谢您

Sud*_*han 18

从HomeActivity发送值

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

在ProfileActivity中获取值

val profileName=intent.getStringExtra("Username")
Run Code Online (Sandbox Code Playgroud)

  • 这个activity#2意图是getIntent(),它是kotlin中的intent(getIntent) (2认同)

hol*_*ava 8

我在移动,你必须自己测试.

尝试拨打CharSequenceStringMainActivity,你已经把一个CharSequence而不是一个String,例如:

var userName = username.text.toString()
var password = password_field.text.toString()
Run Code Online (Sandbox Code Playgroud)


AaR*_*RiF 7

在 Kotlin 中,您可以简单地使用 Intent 传递数据。您可以直接将数据放入 Intent 中,也可以将这些数据写入包中,然后使用 Intent 将该包发送到另一个活动。

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);
Run Code Online (Sandbox Code Playgroud)