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

时间:2017-07-18 04:34:12

标签: kotlin kotlin-android-extensions

当我在学习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这样做,如果不是故意的话。

7 个答案:

答案 0 :(得分:12)

从HomeActivity发送值

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

在ProfileActivity中获取值

val profileName=intent.getStringExtra("Username")

答案 1 :(得分:7)

我在移动设备上,你必须自己测试。

尝试在CharSequenceString MainActivityCharSequence,而不是String,例如:

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

答案 2 :(得分:3)

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

Select...

答案 3 :(得分:2)

您可以简单地使用意图和包来将数据从一个活动发送到另一个活动。

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

答案 4 :(得分:2)

首先你应该这样做,

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

答案 5 :(得分:1)

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

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

在SecondActivity中:

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

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

答案 6 :(得分:0)

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