我有一个活动,该活动的文本为空,您可以单击添加项目以向文本中添加文本,因此当我尝试将第二个Activity
的数据添加到主文本时,该应用甚至无法启动。
MainActivity
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val textView1: TextView = findViewById(R.id.num1)
val textView2: TextView = findViewById(R.id.num2)
val Button: Button = findViewById(R.id.button)
val intent = intent
val message: String = intent.getStringExtra(SecondActivity.EXTRA_MESSAGE)
textView1.setText(message)
Button.setOnClickListener(){
val intent: Intent = Intent(this, SecondActivity::class.java)
startActivity(intent)
}
}
第二活动:
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_second)
val item = edit.text.toString()
button.setOnClickListener(){
val intent = Intent(this, MainActivity::class.java)
intent.putExtra(EXTRA_MESSAGE , item)
startActivity(intent)
}
}
companion object {
val EXTRA_MESSAGE: String =
"com.example.android.twoactivities.extra.MESSAGE"
}
答案 0 :(得分:0)
val intent:Intent = Intent(this,SecondActivity :: class.java) startActivityForResult(intent,101)打算在第一次活动之后接收来自第二次活动的数据。
步骤1:通过将Intent与 startActivityForResult(Intent intent,int REQUEST_CODE)一起使用Intent启动第二活动,您将收到从第二活动发送的数据
第2步:打开第二活动,并在要完成第二活动的位置(即要将数据发送到 First活动) 注意:“ KEY”和数据类型传递对于在首次活动
中获得结果很重要
val value : String = "sendBackData"
val intent = Intent()
resultIntent.putExtra("KEY", value)
setResult(Activity.RESULT_OK, intent)
finish()
第3步:在第一个活动中。创建覆盖方法 onActivityResult 以使用“ KEY”
将数据导入“第一活动”注意:第一个活动的onActivityResult 中的第二个活动中的键和键。 / p>
override fun onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode == 101 && resultCode == RESULT_Ok && data != null){
val str : String = data.getStringExtra("KEY")
}
}
答案 1 :(得分:0)
您需要致电
startActivityForResult(intent, request_code) ;
代替
startActivity(intent);
以便在onActivityResult方法中接收响应。
答案 2 :(得分:0)
您好,请使用 id | elem
:-------------------------- | ---:
GOLDEN oy | 1
gallne | 2
OSETTY EESTAUEA | 3
AIsoR | 4
mloachomgrprgren | 1
LD | 1
a@lokomgrergimi | 1
GOLDON ory OSETTY ESTAUEANT | 1
AIENISORSSA | 2
gal | 3
,在您的SecondActivty中只需使用
startActivityForResult(intent, requestcode);
重新运行到MainActivity。
答案 3 :(得分:0)
首先,从MainActivity到SecondActivity,您需要使用startActivityForResult()
val requestCode = 0
val intent = Intent(this, SecondActivity::class.java)
intent.putExtra("your key","your value")
this.startActivityForResult(intent, requestCode)
您声明一个请求代码(一个整数),像现在一样声明意图,然后将关键字放入意图中,并添加额外的内容。 重要部分:您需要将startActivityForResult与您的意图和请求代码一起使用。
现在,在第二个活动中,获取您的意图字符串:
val string = intent.getStringExtra("your key")
准备返回值时,请使用:
val resultCode = 1
val returnIntent = Intent()
returnIntent.putExtra("your key","your value")
setResult(resultCode, intent)
finish()
在创建新意图的地方,将需要放入的东西放入意图附加中,然后将其与setResult一起返回-记住resultCode和requestCode。 finish()用于关闭您当前所在的活动(仅设置结果不会关闭该活动)
最后,在主要活动上,您需要覆盖此方法:
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
if (requestCode == yourRequestCode){
if (resultCode == yourResultCode){
//do something
}
}
}