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

如何将值从活动传递到kotlin中的另一个活动,kotlin,kotlin-android-extensions,Kotlin,Kotlin Android Extensions,在我学习Kotlin for Android开发时,我现在正在尝试一些基本的程序,比如hello world,以及如何从一个活动导航到另一个活动,在这方面没有问题 我关心的是,当我从一个活动转到另一个活动时,它工作得很好,但我不知道如何在活动之间传递值 我厌倦了在一个活动中设置值,而在另一个活动中检索值,因为它不起作用 请参阅下面的代码片段 这是我的主要活动,我将用户名和密码从“编辑文本”和“设置”转换为“意图”: class MainActivity : AppCompatActivity()

在我学习Kotlin for 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);
    }
}
}

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

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做到这一点。

我在手机上,你必须自己测试

main活动
中,尝试将
CharSequence
转换为
字符串
,您已将
CharSequence
而不是
字符串
,例如:

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

您可以简单地使用intent和bundle将数据从一个活动发送到另一个活动

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

在Kotlin中,只需使用意图即可传递数据。您可以直接将数据放入intent,也可以将这些数据写入bundle,并使用intent将该bundle发送给另一个活动

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);
//点击按钮
var but=findViewById(R.id.buttionActivity\u two)作为按钮
但是,setOnClickListener{
//定义意图
var intent=intent(applicationContext,MainActivity::class.java)
//这里“first”是键,123是值
意图。额外(“第一”,123)
星触觉(意图)
}
}
//如果参加其他活动
var Intent1:Intent
Intent1=getIntent()
//这里第一个是键,0是默认值
var obj:Int=Intent1.getIntExtra(“第一”,0);
Log.d(“mytag”,“值为==>”+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 )

您只需访问该值,而无需使用附加值或意图。只需在MainActivity中使用同伴对象:

    companion object{
        val userName: String = String()
        val password: String = String()
    }
在第二项活动中:

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

您可以轻松地访问多个活动中的值

@Jeyaseelan一点也不。逻辑问题:如果我们在活动#1中创建了intent,我们如何在不在活动#2中声明的情况下访问它?这个活动#2 intent是getIntent(),在kotlinI中是intent(getIntent),我不是Android的超级开发人员,但我已经粘贴了您的代码行,它不起作用)Kotlin:未解析引用:companion
    companion object{
        val userName: String = String()
        val password: String = String()
    }
    var strUser: String = MainActivity.username
    var strPassword: String = MainActivity.password