我正在尝试创建一个简单的应用程序,您可以在其中通过editText在一个活动中键入数据,并在TextView的另一个活动中显示该数据。但是我真的不知道如何使它工作。如您所见,这是简单的代码,但是现在当我单击“提交”时,其他活动没有任何反应。 这是第一项活动
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
}
fun switchToActivity (view: View){
val myIntent = Intent(this, Main2Activity::class.java)
startActivity(myIntent)
}
override fun onActivityResult(requestCode: Int,
resultCode: Int,
myInten: Intent?) {
var text2 = myInten?.getStringExtra("text")
textView.setText(text2)
}
}
这是第二个
class Main2Activity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main2)
}
fun buttonListener (view: View){
var text = editText.text.toString()
val myIntent = Intent()
myIntent.putExtra("textView", text)
setResult(Activity.RESULT_OK, myIntent)
finish()
}
}
答案 0 :(得分:2)
您的代码有2个问题。
首先,要接收其他活动的结果,必须使用startActivityForResult()。
fun switchToActivity (view: View){
val myIntent = Intent(this, Main2Activity::class.java)
startActivityForResult(myIntent)
}
第二,保存和检索结果时必须使用相同的密钥。
var text2 = myInten?.getStringExtra("textView")
放在一起。
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
}
fun switchToActivity (view: View){
val myIntent = Intent(this, Main2Activity::class.java)
startActivityForResult(myIntent)
}
override fun onActivityResult(requestCode: Int,
resultCode: Int,
myInten: Intent?) {
var text2 = myInten?.getStringExtra("textView")
textView.setText(text2)
}
}
答案 1 :(得分:0)
您应该使用:startActivityForResult(myIntent)
而不是:startActivity(myIntent)