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

xkrw2x1b  于 2023-03-13  发布在  Kotlin
关注(0)|答案(8)|浏览(213)

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

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

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

yizd12fk

yizd12fk1#

从主页活动发送值

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

startActivity(intent)

获取ProfileActivity中的值

val profileName = intent.getStringExtra("Username")
ercv8c1e

ercv8c1e2#

我在移动的上,你自己测吧。
尝试在MainActivity中将CharSequence转换为String,您放入的是CharSequence而不是String,例如:

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

nwlqm0z13#

在Kotlin中,您只需使用Intent即可传递数据,也可以直接将数据放入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);
ctrmrzij

ctrmrzij4#

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

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

bqjvbblv5#

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

pdkcd3nj6#

首先你应该这样做,

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

nhhxz33t7#

您可以直接访问值,而无需使用extras或intent。只需使用MainActivity中的配套对象:

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

在第二个活动中:

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

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

wyyhbhjk

wyyhbhjk8#

Send data  

    val Name=findViewById<EditText>(R.id.editTextTextPersonName)  
    val Name2=findViewById<EditText>(R.id.editTextTextPersonName2)  
    val name=Name.text.toString()  
    val age=Name2.text.toString()  
    val intent1=Intent(this,Second::class.java).also {  
    it.putExtra("Username",name)  
    it.putExtra("Age",age)  
    startActivity(it);   
    }

接收数据

val name=intent.getStringExtra ("Username")
val age = intent.getStringExtra("Age")
val textView5=findViewById<TextView>(R.id.textView).apply {
text= "Name = $name"
}
val textView6=findViewById<TextView>(R.id.textView2).apply {
text= "Age = $age"
}

相关问题