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